Author: Yun-Chi (Yuki) Chen Affiliation: Graduate Institute of Biomedical Electronics and Bioinformatics, National Taiwan University

This notebook is for the final project of 113-2 scRNA-seq analysis class. This project aims to analyze the data from this paper using Seurat and other packages.

Read data and creat Seurat object

library(Seurat)
Loading required package: SeuratObject
Loading required package: sp

Attaching package: ‘SeuratObject’

The following objects are masked from ‘package:base’:

    intersect, t

Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
library(ggplot2)
library(tidyr)
library(dplyr)

Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union
set.seed(124)

# Create an empty list to store Seurat objects for each sample
seurat_list <- list()

# List of sample identifiers 
samples <- c("GSM5474333_NHS1", "GSM5474334_NHS2", "GSM5474335_NHS3", "GSM5474336_AD2", "GSM5474337_AD3", "GSM5474338_AD4", "GSM5474339_AD5")

# Directory containing the raw files
raw_data_dir <- "/Users/yunchichen/113-2_scRNA/final_project/GSE180885_RAW/"
# Loop through each sample and create a Seurat object
for (sample in samples) {
  # Construct the directory path where the 10X data is stored
  data_dir <- paste0(raw_data_dir, sample)
  
  # Read 10X data using the directory path
  data <- Read10X(data.dir = data_dir) # The Read10X can only read the barcodes.tsv, features.tsv, and matrix.mtx (.gz files are ok) without any prefix
  
  # Create Seurat object
  seurat_obj <- CreateSeuratObject(counts = data)
  seurat_list[[sample]] <- seurat_obj
}

Quality control

Arrange the meta.data columns for easier QC

# Merge each samples for easier QC
seurat_merged <- merge(seurat_list[[1]], y = seurat_list[c("GSM5474334_NHS2", "GSM5474335_NHS3", "GSM5474336_AD2", "GSM5474337_AD3", "GSM5474338_AD4", "GSM5474339_AD5")], add.cell.ids = names(seurat_list))

# Create Sample column that is identical as row name (sample_condition and num_barcode)
seurat_merged$Sample <- rownames(seurat_merged@meta.data)

# Separate the 'Sample' column into 'Sample_ID', 'Sample', and 'Barcode'
seurat_merged@meta.data <- separate(seurat_merged@meta.data, col = 'Sample', 
                                    into = c('Sample_ID', 'Sample', 'Barcode'), 
                                    sep = '_')

# Keep only the alphabetic part of the 'Sample' column and assign to 'Condition' column (e.g., remove the 1 of NHS1)
seurat_merged@meta.data$Condition <- gsub("\\d", "", seurat_merged@meta.data$Sample)

# Reorder the 'Sample' factor levels to display NHS samples first, followed by AD samples
seurat_merged$Sample <- factor(seurat_merged$Sample, levels = c("NHS1", "NHS2", "NHS3", "AD2", "AD3", "AD4", "AD5"))

Calculate and visualize QC metrics

# Calculate mitochondrial percentage
seurat_merged$percent.mt <- PercentageFeatureSet(seurat_merged, pattern = "^MT-")

# Visualize QC metrics as a violin plot
VlnPlot(seurat_merged, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3, group.by = 'Sample', pt.size = 0)
Warning: Default search for "data" layer in "RNA" assay yielded no results; utilizing "counts" layer instead.Warning: The `slot` argument of `FetchData()` is deprecated as of SeuratObject 5.0.0.
Please use the `layer` argument instead.Warning: `PackageCheck()` was deprecated in SeuratObject 5.0.0.
Please use `rlang::check_installed()` instead.

plot1 <- FeatureScatter(seurat_merged, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(seurat_merged, feature1 = "nCount_RNA", feature2 = "nFeature_RNA") + geom_smooth(method = 'lm')
plot1

plot2

Filter out the low-quality cells

There are 26278 cells in seurat_merged. After filtering, there are 18208 cells in seurat_filtered. These thresholds (nFeature_RNA < 5000 & percent.mt < 10) are from the original paper, which are also reasonable from our QC visualization.

seurat_filtered <- subset(seurat_merged, subset = nFeature_RNA < 5000 & percent.mt < 10) 

Pre-process standard workflow for each sample, in order to input to DoubletFinder

seurat_list_filtered <- SplitObject(seurat_filtered, split.by = 'Sample')

for (i in 1:length(seurat_list_filtered)) {
  
  # Normalize, find variable features, scale, run PCA
  seurat_list_filtered[[i]] <- seurat_list_filtered[[i]] %>%
    NormalizeData() %>%  
    FindVariableFeatures() %>%  
    ScaleData() %>%  
    RunPCA(npcs = 20)  
  
  # Visualize the elbow plot for each Seurat object to identify the number of PCs to use
  p1 <- ElbowPlot(seurat_list_filtered[[i]]) + ggtitle(paste("Elbow Plot for", names(seurat_list_filtered)[i])) +
                                               theme(plot.title = element_text(hjust = 0.5)) # center the title
  print(p1)
  
  # Find neighbors using the first 20 PCs
  seurat_list_filtered[[i]] <- FindNeighbors(seurat_list_filtered[[i]], dims = 1:20)
  
  # Perform clustering (find clusters based on the neighbors)
  seurat_list_filtered[[i]] <- FindClusters(seurat_list_filtered[[i]], resolution = 0.5)  
  
  # Run UMAP using the first 20 principal components from PCA
  seurat_list_filtered[[i]] <- RunUMAP(seurat_list_filtered[[i]], dims = 1:20)  
  
  # Visualize UMAP
  p2 <- DimPlot(seurat_list_filtered[[i]], reduction = "umap") + ggtitle(paste("UMAP for", names(seurat_list_filtered)[i])) +
                                                                 theme(plot.title = element_text(hjust = 0.5)) # center the title
  print(p2)
  
  # Define the RDS filename with the directory path
  rds_filename <- paste0("/Users/yunchichen/113-2_scRNA/final_project/processed_data/", "filtered_", names(seurat_list_filtered)[i], ".rds")
  
  # Save the Seurat object to the RDS file
  saveRDS(seurat_list_filtered[[i]], file = rds_filename)
}
Normalizing layer: counts.1
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.1
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
PC_ 1 
Positive:  AREG, XCL1, ZNF331, PHLDA1, XCL2, TRDC, SOCS1, LTB, CITED2, GNLY 
       GADD45G, CREM, CCL5, CSF2, PRNP, ALOX5AP, TYROBP, SLAMF1, SPRY1, NKG7 
       KLRC1, PRDM1, CD40LG, KLRD1, CCR6, PLIN2, PTGS2, PLAC8, ITM2A, ARID5B 
Negative:  CPVL, LYZ, HLA-DRA, HLA-DQA1, HLA-DPB1, HLA-DPA1, C1orf54, CST3, HLA-DRB1, HLA-DMA 
       LGALS2, S100B, CD74, HLA-DQB1, SPI1, AIF1, CLEC7A, LY86, CLEC9A, IRF8 
       RNASE6, HLA-DMB, GRN, DNASE1L3, COTL1, AC020656.1, TACSTD2, PKIB, BASP1, TGFBI 
PC_ 2 
Positive:  ACTB, FTH1, GADD45B, AREG, XCL1, S100A4, ID2, HSP90AA1, XCL2, TYROBP 
       FCER1G, ZNF331, RGS1, CREM, PHLDA1, GNLY, TRDC, GAPDH, S100A10, MAFF 
       KLRC1, ARL5B, NKG7, CCL4, CKS2, DUSP4, GEM, HSPA1B, KLRD1, PRNP 
Negative:  MZB1, JCHAIN, DERL3, TNFRSF17, IGHG1, IGKC, IGHG2, IGHG3, GNG7, CD79A 
       IGHA2, QPCT, FCRL5, IGHA1, IGLV3-1, TNFRSF13B, SEC11C, PRDX4, IGHGP, IGLC2 
       LINC02362, SPAG4, CD27, IGHG4, FCRLA, MEF2C, SSR4, POU2AF1, AL391056.1, FKBP11 
PC_ 3 
Positive:  VIM, FTH1, S100A6, ZNF331, RGS1, LGALS1, LTB, PRNP, DUSP4, SLAMF1 
       S100A4, PHLDA1, GPR183, PLIN2, CCR6, ARL5B, CD40LG, DNAJB9, CREM, IL13 
       PTGS2, HPGDS, LGALS3, AREG, HSP90AA1, TIMP1, BATF, PFKFB3, NINJ1, ARID5B 
Negative:  NKG7, CCL4, GZMA, GNLY, KLRD1, CCL3, GZMB, KLRF1, CCL5, CMC1 
       CLIC3, FCGR3A, SPON2, CCL4L2, GZMM, IFNG, PRF1, CST7, GZMH, FGFBP2 
       CD7, TYROBP, PYHIN1, CD160, FCER1G, KLRC1, GZMK, LITAF, SH2D1A, S1PR5 
PC_ 4 
Positive:  LGALS2, C1orf54, LYZ, DNASE1L3, CLEC9A, RNASE6, IRF8, CLEC7A, CPVL, CST3 
       HLA-DQA1, HLA-DPB1, HLA-DPA1, WDFY4, HLA-DRA, MNDA, VMO1, SLAMF8, MPEG1, SHTN1 
       BASP1, HLA-DRB1, HLA-DQB1, IER5, CD74, CXCL16, CD83, CLIC2, RUBCNL, HLA-DMA 
Negative:  CDK1, PCLAF, S100A4, ZWINT, UBE2C, TYMS, STMN1, TK1, CDKN3, BIRC5 
       CKS1B, NUSAP1, UBE2T, HIST1H4C, CENPF, PPM1N, MAD2L1, TIMP1, AURKB, PLEK2 
       LDHA, LGALS1, TPI1, SGO1, HPGDS, RPS4Y1, TUBA1B, TUBB, GGH, MMP9 
PC_ 5 
Positive:  ALOX5AP, BATF, SLAMF1, IL13, HPGDS, PLIN2, CD40LG, GPR183, CCR6, NBAS 
       MAF, LTB, LMO4, PRDM1, IL17RB, FABP5, PTGS2, FTH1, PTGDR2, SOCS1 
       MIIP, ZEB2, DUSP6, C1orf162, LINC02195, DNAJB9, CXCR6, GATA3-AS1, STMN1, CITED2 
Negative:  XCL1, XCL2, SPINK2, FCER1G, TMPRSS11E, TYROBP, GADD45B, GSN, SPRY1, ZNF683 
       EMP1, MAFF, GEM, SPTSSB, KLRC1, RAMP1, MB, AREG, RGS10, RARRES2 
       CD9, PTGER3, ITM2C, CORO1B, ISG15, KRT86, LINC01871, PECAM1, LGALS1, IFITM3 
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 3648
Number of edges: 143967

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8673
Number of communities: 11
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 2759
Number of edges: 111427

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8378
Number of communities: 9
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 4450
Number of edges: 168858

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8978
Number of communities: 13
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1936
Number of edges: 57143

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9070
Number of communities: 12
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1956
Number of edges: 60466

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9001
Number of communities: 11
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1664
Number of edges: 48805

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9061
Number of communities: 12
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================================================================| 100%
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1795
Number of edges: 56029

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8929
Number of communities: 9
Elapsed time: 0 seconds
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

Remove doublets by DoubletFinder

# Install Doublet Finder
remotes::install_github('chris-mcginnis-ucsf/DoubletFinder', force = TRUE)
Downloading GitHub repo chris-mcginnis-ucsf/DoubletFinder@HEAD
── R CMD build ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  
   checking for file ‘/private/var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T/RtmpN5jY3Z/remotesd94411462bf9/chris-mcginnis-ucsf-DoubletFinder-1b244d8/DESCRIPTION’ ...
  
✔  checking for file ‘/private/var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T/RtmpN5jY3Z/remotesd94411462bf9/chris-mcginnis-ucsf-DoubletFinder-1b244d8/DESCRIPTION’

  
─  preparing ‘DoubletFinder’:
   checking DESCRIPTION meta-information ...
  
✔  checking DESCRIPTION meta-information

  
─  checking for LF line-endings in source and make files and shell scripts

  
─  checking for empty or unneeded directories
─  building ‘DoubletFinder_2.0.6.tar.gz’

  
   
* installing *source* package ‘DoubletFinder’ ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (DoubletFinder)
# Library the packages needed for doublet finder
library(Matrix)

Attaching package: ‘Matrix’

The following objects are masked from ‘package:tidyr’:

    expand, pack, unpack
library(fields)
Loading required package: spam
Spam version 2.11-1 (2025-01-20) is loaded.
Type 'help( Spam)' or 'demo( spam)' for a short introduction 
and overview of this package.
Help for individual functions is also obtained by adding the
suffix '.spam' to the function name, e.g. 'help( chol.spam)'.

Attaching package: ‘spam’

The following object is masked from ‘package:Matrix’:

    det

The following objects are masked from ‘package:base’:

    backsolve, forwardsolve

Loading required package: viridisLite

Try help(fields) to get started.
library(KernSmooth)
KernSmooth 2.23 loaded
Copyright M. P. Wand 1997-2009
library(ROCR)
library(parallel)
library(DoubletFinder)
library(Seurat)
library(ggplot2)
library(tidyr)
library(dplyr)
# Read the filtered RDS files-----------------------------
# List all RDS files that start with 'filtered_' in the specified directory
rds_files <- list.files("/Users/yunchichen/113-2_scRNA/final_project/processed_data/", 
                        pattern = "^filtered_.*\\.rds$", 
                        full.names = TRUE)

# Initialize an empty list to store the Seurat objects
seurat_list_filtered <- list()

# Loop over each RDS file and read it into the list
for (file in rds_files) {
  # Read the Seurat object from the RDS file
  seurat_obj <- readRDS(file)
  
  # Extract the sample name from the filename (optional, for naming)
  sample_name <- gsub("^filtered_", "", gsub(".rds", "", basename(file)))  # Remove "filtered_" and ".rds"
  
  # Add the Seurat object to the list with sample_name as key
  seurat_list_filtered[[sample_name]] <- seurat_obj
}

# print sample names to check if all the objects are loaded properly by inspecting the list
print(names(seurat_list_filtered))  
[1] "AD2"  "AD3"  "AD4"  "AD5"  "NHS1" "NHS2" "NHS3"
# Loop each sample to run Doublet Finder workflow-----------------------------
for (i in 1:length(seurat_list_filtered)){
  
  # pK Identification (no ground-truth)-----------------------------
  seurat.list.df <- paramSweep(seurat_list_filtered[[i]], PCs = 1:20, sct = FALSE)
  seurat.df <- summarizeSweep(seurat.list.df, GT = FALSE)
  seurat.pktable <- find.pK(seurat.df)
  
  # Visualize pK identification with ggplot
  p3 <- ggplot(seurat.pktable, aes(pK, BCmetric, group = 1)) +
    geom_point() +
    geom_line() + 
    ggtitle(paste("pK Identification for", names(seurat_list_filtered)[i])) +  
    theme(plot.title = element_text(hjust = 0.5),  
          axis.text = element_text(size = 12),  
          axis.title = element_text(size = 14)) +  
    labs(x = "pK Value", y = "BCmetric")  
  print(p3)
  
  # Extract the best pK value
  pK <- seurat.pktable %>%
    filter(BCmetric == max(BCmetric)) %>%
    select(pK)
  pK <- as.numeric(as.character(pK[[1]]))
  
  # Homotypic Doublet Proportion Estimate-----------------------------
  # Get the number of cells for the current dataset
  num_cells <- nrow(seurat_list_filtered[[i]]@meta.data)
  # Tailor the doublet formation rate based on the number of cells
  doublet_rate <- ifelse(num_cells <= 1000, 0.008,
                           ifelse(num_cells <= 2000, 0.016,
                                  ifelse(num_cells <= 3000, 0.023,
                                         ifelse(num_cells <= 4000, 0.031, 0.039))))
  # Model homotypic doublets
  annotations <- seurat_list_filtered[[i]]@meta.data$seurat_clusters
  homotypic.pro <- modelHomotypic(annotations)           
  nExp_poi <- round(doublet_rate * num_cells)  
  nExp_poi.adj <- round(nExp_poi*(1-homotypic.pro))
  
  # Run Doublet Finder-----------------------------
  # ISSUE: Error in xtfrm.data.frame(x) : cannot xtfrm data frames, solved by https://github.com/chris-mcginnis-ucsf/DoubletFinder/issues/228
  seurat_list_filtered[[i]] <- doubletFinder(seurat_list_filtered[[i]], PCs = 1:20, pN = 0.25, pK = pK, nExp = nExp_poi.adj, sct = FALSE)

  # Visualize doublet-----------------------------
  # Dynamically generate the column name based on pK and nExp_poi.adj
  df_column_name <- paste0("DF.classifications_0.25_", pK, "_", nExp_poi.adj)
  p4 <- DimPlot(seurat_list_filtered[[i]], reduction = "umap", group.by = df_column_name) + ggtitle(names(seurat_list_filtered)[i]) +
                                                                                theme(plot.title = element_text(hjust = 0.5))
  print(p4)
  
  # Subset the singlet cells (cut the doublet cells)-----------------------------
  # Visualize how many genes and cells before DF processing
  seurat_list_filtered[[i]]@assays$RNA@layers$counts@Dim
  
  # Keep only the singlet by subset()
  #ISSUE: Error in FetchData():! None of the requested variables were found by using 
  #`pro_filter <- subset(seurat_list_filtered[[i]], subset = seurat_list_filtered[[i]]@meta.data[[df_column_name]] == "Singlet")`
  # The solution is modified from https://github.com/chris-mcginnis-ucsf/DoubletFinder/issues/84#issuecomment-645590209
  pro_filter <- subset(seurat_list_filtered[[i]], 
                     cells = rownames(seurat_list_filtered[[i]]@meta.data)[
                       which(seurat_list_filtered[[i]]@meta.data[[df_column_name]] == "Singlet")
                     ])
  
  # Visualize how many genes and cells after DF processing
  pro_filter@assays$RNA@layers$counts@Dim

  # Define the RDS filename with the directory path
  rds_filename2 <- paste0("/Users/yunchichen/113-2_scRNA/final_project/processed_data/", "doublet_removed_", names(seurat_list_filtered)[i], ".rds")

  # Save the Seurat object to the RDS file
  saveRDS(pro_filter, file = rds_filename2)
}
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
NULL
[1] "Creating 645 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 652 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 555 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 598 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 1216 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 920 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Creating 1483 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Data Integration by Harmony

# Read the RDS files that have removed doublets
rds_files <- list.files("/Users/yunchichen/113-2_scRNA/final_project/processed_data/", 
                        pattern = "^doublet_removed_.*\\.rds$", 
                        full.names = TRUE)

# Initialize an empty list to store the Seurat objects
seurat_list_rmd <- list()

# Loop over each RDS file and read it into the list
for (file in rds_files) {
  # Read the Seurat object from the RDS file
  seurat_obj <- readRDS(file)
  
  # Extract the sample name from the filename (optional, for naming)
  sample_name <- gsub("^doublet_removed_", "", gsub(".rds", "", basename(file)))  
  
  # Add the Seurat object to the list with sample_name as key
  seurat_list_rmd[[sample_name]] <- seurat_obj
}

# print sample names to check if all the objects are loaded properly by inspecting the list
print(names(seurat_list_rmd))  
[1] "AD2"  "AD3"  "AD4"  "AD5"  "NHS1" "NHS2" "NHS3"

Visualize batch effects before integration

# Merge Seurat objects from the list, using sample names as the cell identifiers
seurat_merged_rmd <- merge(seurat_list_rmd[[1]], 
                            y = seurat_list_rmd[2:length(seurat_list_rmd)], 
                            add.cell.ids = names(seurat_list_rmd))
# Order the levels to make NHS showed before AD 
seurat_merged_rmd$Sample <- factor(seurat_merged_rmd$Sample, levels = c("NHS1", "NHS2", "NHS3", "AD2", "AD3", "AD4", "AD5"))

# Preprocess the merged Seurat object using standard workflow
seurat_merged_rmd <- seurat_merged_rmd %>%
  FindVariableFeatures() %>%
  ScaleData() %>%
  RunPCA(npcs = 20)  # Set the number of PCs based on your analysis needs
Finding variable features for layer counts.4.1
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.5.2
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.6.3
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.7.4
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.1.5
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.2.6
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts.3.7
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
PC_ 1 
Positive:  SRGN, CD69, CXCR4, CD52, CTSW, KLRB1, IL32, HCST, S100A4, CYBA 
       RGCC, LAPTM5, RGS1, CORO1A, TRDC, DUSP2, PTPRC, BIRC3, GMFG, IL2RG 
       LGALS1, CD53, CD37, TYROBP, SLC2A3, CYTIP, RHOH, LCP1, LTB, TRBC1 
Negative:  CD9, YBX3, S100A16, PERP, SFN, KRT14, S100A14, DSP, CST3, AQP3 
       KRT5, LY6D, HSPB1, FXYD3, DSC3, IFI27, MARCKS, CAV1, RND3, S100A2 
       S100A11, IFITM3, LGALS7, GSTP1, LGALS7B, ANXA2, TXN, CXCL14, KRT6A, TUBA1C 
PC_ 2 
Positive:  S100A14, SFN, LY6D, DSP, LGALS7, AQP3, FXYD3, PERP, LGALS7B, DSC3 
       SERPINB5, JUP, TACSTD2, PKP1, DSG1, LAD1, DMKN, RAB25, IMPA2, LYPD3 
       KRT5, FGFBP1, PHGDH, NSG1, ALDH2, S100A16, CSTA, KRT6A, PDZK1IP1, RHOV 
Negative:  COL1A2, COL3A1, COL6A2, COL6A1, COL1A1, IGFBP4, THY1, TIMP2, COL6A3, FSTL1 
       MMP2, FBLN2, AEBP1, PLPP3, SPARC, PCOLCE, SFRP2, PRRX1, CCDC80, FBN1 
       LUM, CTSK, VCAN, TWIST1, TWIST2, FN1, PLAC9, DPT, SERPING1, COL5A2 
PC_ 3 
Positive:  RAMP2, EMCN, RNASE1, ADGRL4, PLVAP, A2M, ECSCR, SOX18, EGFL7, CD93 
       CLDN5, RAMP3, CLEC14A, PECAM1, MCTP1, SPARCL1, ESAM, IL3RA, CDH5, FLT1 
       MMRN2, JAM2, TM4SF1, MYCT1, PCAT19, BCAM, CYYR1, ACKR1, TSPAN7, LMCD1 
Negative:  LUM, SFRP2, COL1A1, CTSK, TWIST2, COL1A2, COL3A1, FBLN1, DPT, COL6A3 
       CFD, MFAP4, LRP1, VCAN, COL5A1, COL6A2, FBLN2, MXRA8, THY1, DCN 
       PCOLCE, C1S, CCDC80, COL6A1, MMP2, COMP, PDGFRA, COL5A2, AEBP1, RCN3 
PC_ 4 
Positive:  KRTDAP, SBSN, CALML5, SPRR1B, SULT2B1, LYPD3, EPHX3, C10orf99, KCNK7, SLPI 
       KRT2, DSC1, BBOX1, IVL, DMKN, CD24, DEFB1, KRT1, RDH12, DEGS2 
       ALDH3B2, CLDN4, KRT6C, KRT10, TMEM40, KRT6B, THEM5, TMEM45B, ELOVL4, CALML3 
Negative:  TOP2A, UBE2C, CDK1, NUSAP1, ASPM, BIRC5, CCNA2, PBK, CENPF, CDKN3 
       CCNB2, TPX2, HMMR, DLGAP5, CCNB1, MKI67, ANLN, PCLAF, KIF23, NUF2 
       CDCA3, DEPDC1, TYMS, CDC20, CENPA, CEP55, TK1, CENPW, TTK, ZWINT 
PC_ 5 
Positive:  SBSN, FABP5, SPRR1B, CALML5, KRTDAP, SULT2B1, CRABP2, CD24, KRT6B, C10orf99 
       SERPINB3, IVL, SERPINB4, KRT6C, EPHX3, TMEM45B, SPRR2A, RDH12, GGH, S100A7 
       GLTP, UBE2C, ALDH3B2, CYSRT1, TOP2A, ELOVL4, TMEM40, MAL2, CCNA2, NCCRP1 
Negative:  COL17A1, DST, KRT15, CYR61, CXCL14, LAMB3, ASPN, CCL2, WNT3, ASS1 
       WNT4, GDPD2, ITGB4, IL1R2, COL7A1, CAV1, CAV2, CTNNAL1, ALDH3A1, SERPINH1 
       DAPL1, FAM213A, IL20, TP53AIP1, FJX1, SCUBE2, FOXQ1, PDLIM1, FTH1, S100A2 
# Elbow Plot to visualize the optimal number of PCs
ElbowPlot(seurat_merged_rmd)


# Find Neighbors
seurat_merged_rmd <- FindNeighbors(seurat_merged_rmd, dims = 1:20)  # Using the first 20 PCs
Computing nearest neighbor graph
Computing SNN
# Find Clusters (Resolution can be adjusted)
seurat_merged_rmd <- FindClusters(seurat_merged_rmd, resolution = 0.5)  # Adjust resolution based on your clustering needs
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 638354

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9354
Number of communities: 19
Elapsed time: 2 seconds
# Run UMAP for dimensionality reduction
seurat_merged_rmd <- RunUMAP(seurat_merged_rmd, dims = 1:20)  # You can adjust the number of dimensions if necessary
16:35:58 UMAP embedding parameters a = 0.9922 b = 1.112
16:35:58 Read 17812 rows and found 20 numeric columns
16:35:58 Using Annoy for neighbor search, n_neighbors = 30
16:35:58 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:35:59 Writing NN index file to temp file /var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T//RtmpN5jY3Z/filed9443935b713
16:35:59 Searching Annoy index using 1 thread, search_k = 3000
16:36:02 Annoy recall = 100%
16:36:03 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
16:36:04 Initializing from normalized Laplacian + noise (using RSpectra)
16:36:05 Commencing optimization for 200 epochs, with 743812 positive edges
16:36:05 Using rng type: pcg
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:36:12 Optimization finished
# Visualize UMAP
p1 <- DimPlot(seurat_merged_rmd, reduction = "umap", label = TRUE, group.by = "Sample")
p2 <- DimPlot(seurat_merged_rmd, reduction = "umap", label = TRUE, group.by = "Condition")

p1 + p2

From the non-integrated results, we observe a batch effect between the NHS and AD conditions. To address this, we need to perform data integration to align cell types across conditions (e.g., NHS ILC with AD ILC). This integration will help us identify more accurate differentially expressed genes (DEGs) by reducing batch effects and focusing on the true biological differences between conditions.

The next step is to decide on the integration method. The Seurat tutorial suggests using Canonical Correlation Analysis (CCA) for integration. However, more complex scenarios, like ours with varying donors and protocols between NHS and AD, require a more robust approach, as described in this tutorial. Given these complexities, we will use Harmony for integration, as used in the original paper of this dataset.

There are more discussion on how to integrate different biological samples across conditions like 1, 2, and 3, but using Harmony seems to be a better solution in our case.

Use Harmony to perform data integration

We followed the first scenario in this harmony tutorial.

# install and library harmony
# install.packages("harmony")
library(harmony)

# Perform log-normalization and feature selection, as well as SCT normalization on merged object
seurat_merged_rmd <- seurat_merged_rmd %>%
    NormalizeData() %>%
    FindVariableFeatures(selection.method = "vst", nfeatures = 2000) %>%
    ScaleData() %>%
    SCTransform(vars.to.regress = "percent.mt")
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Warning: Residuals not computed for the following requested features: COL1A2, COL3A1, KRTDAP, IGHG3, IGHG1, S100A7, KRT2, KRT6B, KRT16, KRT6C, LUM, KRT15, KRT17, S100A8, SFRP2, JCHAIN, IGHA2, DCN, KRT6A, IGHGP, S100A9, SPARCL1, IGHG2, POSTN, SPARC, CALML5, MGP, CCL2, MMP2, SPRR1B, SERPINB4, CXCL14, IGFBP3, TNC, COMP, CXCL12, CCDC80, THY1, IGHG4, TAGLN, IGFBP5, SBSN, CTSK, RAMP2, MZB1, S100A2, ACKR1, GNG11, IGHM, PLVAP, KRT5, FBN1, FBLN1, PLAC9, VCAN, CRYAB, SPRR2A, FBLN2, A2M, FSTL1, UBE2C, DPT, MFAP5, CCL20, C11orf96, AQP1, MFAP4, TNXB, SELE, COL4A1, RNASE1, LTF, SLPI, CTGF, SERPINF1, RGS5, CCL19, RAMP3, CLDN5, WISP2, COL4A2, PLPP3, NNMT, TIMP3, CYR61, SOD3, C1S, DIO2, SOX18, CXCL1, IGHA1, IGFBP6, CCL26, C10orf99, CALML3, FN1, TWIST2, C2CD4B, TM4SF1, LY6D, SERPINB3, PRRX1, CCR6, NR2F2, NDUFA4L2, TOP2A, COL14A1, EMCN, IVL, COL5A2, APOD, COL6A6, EGFL6, COL15A1, HLA-DRB5, IFI27, CTHRC1, EGFL7, RARRES2, CPE, PDGFRB, AEBP1, LGALS2, COL5A1, TNFAIP6, SPRR2D, COL12A1, CLDN4, BGN, TMEM176B, PTN, SPRR2E, GJB2, PMP22, APCDD1, COL6A5, ADGRL4, HPGDS, TWIST1, CH25H, COL17A1, FGFBP1, EDN2, CNFN, SFN, CRABP1, MEG3, CLEC14A, HTRA1, PODXL, ECSCR, MXRA8, IGLC2, CXCL3, SLIT3, CD24, CCL27, IL20, ACKR3, IGFL1, TCIM, DCT, LGALS7B, TMEM45A, F10, CD40LG, CDK1, SERPING1, DSC1, LRP1, PRELP, LMCD1, DEPP1, PDGFRA, PI15, CD34, ASPM, CSTA, ALDH1A1, SERPINB2, IL1R2, MYLK, IGFBP2, CD93, MGST1, JAM2, LHFPL6, IGLC3, STEAP4, PLEKHH2, FLT1, TMEM176A, MT1G, MYH11, WNT5A, DEFB1, SOSTDC1, DSP, COX7A1, VCAM1, SOX17, ID4, TACSTD2, THBS2, CYP1B1, RCN3, EDN1, KCTD12, CCNB2, ELN, SEMA3C, ENPP2, CHI3L2, TSPAN7, ISLR, HTRA3, OLFML3, SLURP1, SPINK5, C1QTNF3, CYP26B1, LTBP1, FKBP10, EPAS1, ANGPTL1, FMOD, ABI3BP, PLAT, SRPX, CAVIN3, ESAM, CCL23, TNFAIP2, BICC1, ZNF385D, CP, FAP, HES5, ADAMTS5, GJB6, CXCR6, CD248, TM4SF18, AXL, ECM1, ITIH5, MLANA, LGALS7, RND3, MUCL1, ASPN, FILIP1L, S100A14, HAS2, KLK7, TINAGL1, SNCG, NRN1, HSPG2, SERPINB13, SYNPO2, KRT23, COL23A1, CD27, ASS1, BCAM, MCTP1, SULT2B1, LAMB2, DSC2, EFEMP1, MMP7, CDH11, CRISPLD2, PDGFRL, PDK4, ARHGAP29, S100A7A, MT1M, HMMR, IL3RA, EREG, GAS1, ANPEP, WFDC1, PPP1R14A, NRP1, EMID1, MFAP2, GPX2, TPPP3, NDN, DDR2, VWF, ANGPTL2, EDNRA, FAM25A, TK1, FOXC1, MRC2, AKR1B10, FST, CENPW, LOXL2, DAB2, CHN1, CYYR1, RBP7, FAM198B, LIFR, SYT8, PLAU, RHOV, DSG1, LOX, IGFL2, NOV, MSX1, LMO2, ELF3, SEMA5A, MRGPRF, MS4A1, SDC2, LRRN4CL, CSF2RB, CSRP2, SFRP1, ITGBL1, KCNK7, CAVIN2, VASN, GJA4, BMP2, DEGS2, NRARP, IL6, LAMB3, MAP1B, NMU, MMP14, CDH5, PTGIS, CASP14, CYSRT1, C1QTNF1, WNT4, LAMC1, MMRN2, MEOX2, CTSL, THEM5, TPX2, SAA1, RNASE6, DLC1, MXRA5, GGT5, C3, LAMA4, OMD, ITGA1, KLK11, GPX8, PBK, ITGB5, THBD, SOX9, CXorf36, KREMEN2, FXYD3, MYCT1, MT1H, ADGRF5, OLFML2A, MAL2, NTM, CENPA, APOBEC3A, CCL7, CCNA2, HMCN1, PLAC4, TMEM204, ADAMTS4, NCCRP1, FAM30A, PKP1, PCDH18, IFIT1, ANGPTL4, VWA1, DSC3, FOXQ1, ALDH3A1, PTK7, ANLN, TROAP, PLK1, S100A16, MAFB, A4GALT, ANTXR1, IL33, DKK3, FAM111B, PDZK1IP1, SERPINB7, RUNX1T1, TNS1, ADM5, HOXD8, EMILIN1, APOC1, COL16A1, SGCE, ADAMTS2, NT5E, DLGAP5, ZWINT, CLDN1, UACA, RAB25, WWTR1, HSPB8, HCAR2, LGALSL, PRRX2, FJX1, OVOL1, TBX3, MYO1B, TGM3, SCUBE2, KDR, CD36, ACVRL1, PXDC1, EFNB2, SLCO2A1, FAM114A1, GPNMB, WNT3, EMP2, CCDC3, ITGB4, PDPN, PGF, LY6G6C, TNFRSF21, FKBP9, CDA, CEP55, SERPINB5, ANXA3, PALMD, ECM2, PPP1R3C, MATN2, CENPE, KRT31, LURAP1L, PRSS3, CDCA3, SELENOP, SELP, AURKB, NRP2, GTSE1, BBOX1, PPIC, RAI14, LPAR1, UBE2T, KIF23, RCAN2, KLK10, NUPR1, COL5A3, COL7A1, PDGFC, ST5, SERTAD4-AS1, CDH13, CXADR, SNAI2, MARVELD1, DDX3Y, TCEAL9, STXBP6, CDHR1, TMEM158, COPZ2, ITGA2, FRMD6, NFIB, NPW, GDPD2, KCNJ2, TMEM98, SOX7, CAV2, TMEM40, CLEC2A, IRX2, ITPRIPL2, NOSTRINCentering and scaling data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Running SCTransform on assay: RNA
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 16087 by 1909
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 1909 cells
Found 118 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 16087 genes
Computing corrected count matrix for 16087 genes
Calculating gene attributes
Wall clock passed: Time difference of 8.040449 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 15809 by 1929
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 1929 cells
Found 110 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 15809 genes
Computing corrected count matrix for 15809 genes
Calculating gene attributes
Wall clock passed: Time difference of 5.672746 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 15809 by 1641
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 1641 cells
Found 101 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 15809 genes
Computing corrected count matrix for 15809 genes
Calculating gene attributes
Wall clock passed: Time difference of 4.503391 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 15828 by 1771
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 1771 cells
Found 136 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 15828 genes
Computing corrected count matrix for 15828 genes
Calculating gene attributes
Wall clock passed: Time difference of 4.707302 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 11907 by 3551
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 3551 cells
Found 41 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 11907 genes
Computing corrected count matrix for 11907 genes
Calculating gene attributes
Wall clock passed: Time difference of 7.754789 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 12066 by 2709
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 2709 cells
Found 68 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 12066 genes
Computing corrected count matrix for 12066 genes
Calculating gene attributes
Wall clock passed: Time difference of 5.958366 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 14810 by 4302
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 4302 cells
Found 223 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 14810 genes
Computing corrected count matrix for 14810 genes
Calculating gene attributes
Wall clock passed: Time difference of 10.78018 secs
Determine variable features
Regressing out percent.mt

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   0%
  |                                                                                                                                                            
  |=                                                                                                                                                     |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   1%
  |                                                                                                                                                            
  |==                                                                                                                                                    |   2%
  |                                                                                                                                                            
  |===                                                                                                                                                   |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   2%
  |                                                                                                                                                            
  |====                                                                                                                                                  |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   3%
  |                                                                                                                                                            
  |=====                                                                                                                                                 |   4%
  |                                                                                                                                                            
  |======                                                                                                                                                |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   4%
  |                                                                                                                                                            
  |=======                                                                                                                                               |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   5%
  |                                                                                                                                                            
  |========                                                                                                                                              |   6%
  |                                                                                                                                                            
  |=========                                                                                                                                             |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   6%
  |                                                                                                                                                            
  |==========                                                                                                                                            |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   7%
  |                                                                                                                                                            
  |===========                                                                                                                                           |   8%
  |                                                                                                                                                            
  |============                                                                                                                                          |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   8%
  |                                                                                                                                                            
  |=============                                                                                                                                         |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |   9%
  |                                                                                                                                                            
  |==============                                                                                                                                        |  10%
  |                                                                                                                                                            
  |===============                                                                                                                                       |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  10%
  |                                                                                                                                                            
  |================                                                                                                                                      |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  11%
  |                                                                                                                                                            
  |=================                                                                                                                                     |  12%
  |                                                                                                                                                            
  |==================                                                                                                                                    |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  12%
  |                                                                                                                                                            
  |===================                                                                                                                                   |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  13%
  |                                                                                                                                                            
  |====================                                                                                                                                  |  14%
  |                                                                                                                                                            
  |=====================                                                                                                                                 |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  14%
  |                                                                                                                                                            
  |======================                                                                                                                                |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  15%
  |                                                                                                                                                            
  |=======================                                                                                                                               |  16%
  |                                                                                                                                                            
  |========================                                                                                                                              |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  16%
  |                                                                                                                                                            
  |=========================                                                                                                                             |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  17%
  |                                                                                                                                                            
  |==========================                                                                                                                            |  18%
  |                                                                                                                                                            
  |===========================                                                                                                                           |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  18%
  |                                                                                                                                                            
  |============================                                                                                                                          |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  19%
  |                                                                                                                                                            
  |=============================                                                                                                                         |  20%
  |                                                                                                                                                            
  |==============================                                                                                                                        |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  20%
  |                                                                                                                                                            
  |===============================                                                                                                                       |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  21%
  |                                                                                                                                                            
  |================================                                                                                                                      |  22%
  |                                                                                                                                                            
  |=================================                                                                                                                     |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  22%
  |                                                                                                                                                            
  |==================================                                                                                                                    |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  23%
  |                                                                                                                                                            
  |===================================                                                                                                                   |  24%
  |                                                                                                                                                            
  |====================================                                                                                                                  |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  24%
  |                                                                                                                                                            
  |=====================================                                                                                                                 |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |======================================                                                                                                                |  26%
  |                                                                                                                                                            
  |=======================================                                                                                                               |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  26%
  |                                                                                                                                                            
  |========================================                                                                                                              |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  27%
  |                                                                                                                                                            
  |=========================================                                                                                                             |  28%
  |                                                                                                                                                            
  |==========================================                                                                                                            |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  28%
  |                                                                                                                                                            
  |===========================================                                                                                                           |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  29%
  |                                                                                                                                                            
  |============================================                                                                                                          |  30%
  |                                                                                                                                                            
  |=============================================                                                                                                         |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  30%
  |                                                                                                                                                            
  |==============================================                                                                                                        |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  31%
  |                                                                                                                                                            
  |===============================================                                                                                                       |  32%
  |                                                                                                                                                            
  |================================================                                                                                                      |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  32%
  |                                                                                                                                                            
  |=================================================                                                                                                     |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  33%
  |                                                                                                                                                            
  |==================================================                                                                                                    |  34%
  |                                                                                                                                                            
  |===================================================                                                                                                   |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  34%
  |                                                                                                                                                            
  |====================================================                                                                                                  |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  35%
  |                                                                                                                                                            
  |=====================================================                                                                                                 |  36%
  |                                                                                                                                                            
  |======================================================                                                                                                |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  36%
  |                                                                                                                                                            
  |=======================================================                                                                                               |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  37%
  |                                                                                                                                                            
  |========================================================                                                                                              |  38%
  |                                                                                                                                                            
  |=========================================================                                                                                             |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  38%
  |                                                                                                                                                            
  |==========================================================                                                                                            |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  39%
  |                                                                                                                                                            
  |===========================================================                                                                                           |  40%
  |                                                                                                                                                            
  |============================================================                                                                                          |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  40%
  |                                                                                                                                                            
  |=============================================================                                                                                         |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  41%
  |                                                                                                                                                            
  |==============================================================                                                                                        |  42%
  |                                                                                                                                                            
  |===============================================================                                                                                       |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  42%
  |                                                                                                                                                            
  |================================================================                                                                                      |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  43%
  |                                                                                                                                                            
  |=================================================================                                                                                     |  44%
  |                                                                                                                                                            
  |==================================================================                                                                                    |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  44%
  |                                                                                                                                                            
  |===================================================================                                                                                   |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  45%
  |                                                                                                                                                            
  |====================================================================                                                                                  |  46%
  |                                                                                                                                                            
  |=====================================================================                                                                                 |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  46%
  |                                                                                                                                                            
  |======================================================================                                                                                |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  47%
  |                                                                                                                                                            
  |=======================================================================                                                                               |  48%
  |                                                                                                                                                            
  |========================================================================                                                                              |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  48%
  |                                                                                                                                                            
  |=========================================================================                                                                             |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  49%
  |                                                                                                                                                            
  |==========================================================================                                                                            |  50%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  50%
  |                                                                                                                                                            
  |============================================================================                                                                          |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  51%
  |                                                                                                                                                            
  |=============================================================================                                                                         |  52%
  |                                                                                                                                                            
  |==============================================================================                                                                        |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  52%
  |                                                                                                                                                            
  |===============================================================================                                                                       |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  53%
  |                                                                                                                                                            
  |================================================================================                                                                      |  54%
  |                                                                                                                                                            
  |=================================================================================                                                                     |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  54%
  |                                                                                                                                                            
  |==================================================================================                                                                    |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  55%
  |                                                                                                                                                            
  |===================================================================================                                                                   |  56%
  |                                                                                                                                                            
  |====================================================================================                                                                  |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  56%
  |                                                                                                                                                            
  |=====================================================================================                                                                 |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  57%
  |                                                                                                                                                            
  |======================================================================================                                                                |  58%
  |                                                                                                                                                            
  |=======================================================================================                                                               |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  58%
  |                                                                                                                                                            
  |========================================================================================                                                              |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  59%
  |                                                                                                                                                            
  |=========================================================================================                                                             |  60%
  |                                                                                                                                                            
  |==========================================================================================                                                            |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  60%
  |                                                                                                                                                            
  |===========================================================================================                                                           |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  61%
  |                                                                                                                                                            
  |============================================================================================                                                          |  62%
  |                                                                                                                                                            
  |=============================================================================================                                                         |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  62%
  |                                                                                                                                                            
  |==============================================================================================                                                        |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  63%
  |                                                                                                                                                            
  |===============================================================================================                                                       |  64%
  |                                                                                                                                                            
  |================================================================================================                                                      |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  64%
  |                                                                                                                                                            
  |=================================================================================================                                                     |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  65%
  |                                                                                                                                                            
  |==================================================================================================                                                    |  66%
  |                                                                                                                                                            
  |===================================================================================================                                                   |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  66%
  |                                                                                                                                                            
  |====================================================================================================                                                  |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  67%
  |                                                                                                                                                            
  |=====================================================================================================                                                 |  68%
  |                                                                                                                                                            
  |======================================================================================================                                                |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  68%
  |                                                                                                                                                            
  |=======================================================================================================                                               |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  69%
  |                                                                                                                                                            
  |========================================================================================================                                              |  70%
  |                                                                                                                                                            
  |=========================================================================================================                                             |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  70%
  |                                                                                                                                                            
  |==========================================================================================================                                            |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  71%
  |                                                                                                                                                            
  |===========================================================================================================                                           |  72%
  |                                                                                                                                                            
  |============================================================================================================                                          |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  72%
  |                                                                                                                                                            
  |=============================================================================================================                                         |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  73%
  |                                                                                                                                                            
  |==============================================================================================================                                        |  74%
  |                                                                                                                                                            
  |===============================================================================================================                                       |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  74%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  75%
  |                                                                                                                                                            
  |=================================================================================================================                                     |  76%
  |                                                                                                                                                            
  |==================================================================================================================                                    |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  76%
  |                                                                                                                                                            
  |===================================================================================================================                                   |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  77%
  |                                                                                                                                                            
  |====================================================================================================================                                  |  78%
  |                                                                                                                                                            
  |=====================================================================================================================                                 |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  78%
  |                                                                                                                                                            
  |======================================================================================================================                                |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  79%
  |                                                                                                                                                            
  |=======================================================================================================================                               |  80%
  |                                                                                                                                                            
  |========================================================================================================================                              |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  80%
  |                                                                                                                                                            
  |=========================================================================================================================                             |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  81%
  |                                                                                                                                                            
  |==========================================================================================================================                            |  82%
  |                                                                                                                                                            
  |===========================================================================================================================                           |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  82%
  |                                                                                                                                                            
  |============================================================================================================================                          |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  83%
  |                                                                                                                                                            
  |=============================================================================================================================                         |  84%
  |                                                                                                                                                            
  |==============================================================================================================================                        |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  84%
  |                                                                                                                                                            
  |===============================================================================================================================                       |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  85%
  |                                                                                                                                                            
  |================================================================================================================================                      |  86%
  |                                                                                                                                                            
  |=================================================================================================================================                     |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  86%
  |                                                                                                                                                            
  |==================================================================================================================================                    |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  87%
  |                                                                                                                                                            
  |===================================================================================================================================                   |  88%
  |                                                                                                                                                            
  |====================================================================================================================================                  |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  88%
  |                                                                                                                                                            
  |=====================================================================================================================================                 |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  89%
  |                                                                                                                                                            
  |======================================================================================================================================                |  90%
  |                                                                                                                                                            
  |=======================================================================================================================================               |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  90%
  |                                                                                                                                                            
  |========================================================================================================================================              |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  91%
  |                                                                                                                                                            
  |=========================================================================================================================================             |  92%
  |                                                                                                                                                            
  |==========================================================================================================================================            |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  92%
  |                                                                                                                                                            
  |===========================================================================================================================================           |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  93%
  |                                                                                                                                                            
  |============================================================================================================================================          |  94%
  |                                                                                                                                                            
  |=============================================================================================================================================         |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  94%
  |                                                                                                                                                            
  |==============================================================================================================================================        |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  95%
  |                                                                                                                                                            
  |===============================================================================================================================================       |  96%
  |                                                                                                                                                            
  |================================================================================================================================================      |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  96%
  |                                                                                                                                                            
  |=================================================================================================================================================     |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  97%
  |                                                                                                                                                            
  |==================================================================================================================================================    |  98%
  |                                                                                                                                                            
  |===================================================================================================================================================   |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  98%
  |                                                                                                                                                            
  |====================================================================================================================================================  |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== |  99%
  |                                                                                                                                                            
  |===================================================================================================================================================== | 100%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Centering data matrix

  |                                                                                                                                                            
  |                                                                                                                                                      |   0%
  |                                                                                                                                                            
  |======================================                                                                                                                |  25%
  |                                                                                                                                                            
  |===========================================================================                                                                           |  50%
  |                                                                                                                                                            
  |================================================================================================================                                      |  75%
  |                                                                                                                                                            
  |======================================================================================================================================================| 100%
Place corrected count matrix in counts slot
Set default assay to SCT
# Calculate PCs using variable features determined by SCTransform (3000 by default)
seurat_merged_rmd <- RunPCA(seurat_merged_rmd, assay = "SCT", npcs = 50)
Warning: The following 664 features requested have not been scaled (running reduction without them): COL1A2, COL3A1, KRTDAP, IGHG3, IGHG1, S100A7, KRT2, KRT6B, KRT16, KRT6C, LUM, KRT15, KRT17, S100A8, SFRP2, JCHAIN, IGHA2, DCN, KRT6A, IGHGP, S100A9, SPARCL1, IGHG2, POSTN, SPARC, CALML5, MGP, CCL2, MMP2, SPRR1B, SERPINB4, CXCL14, IGFBP3, TNC, COMP, CXCL12, CCDC80, THY1, IGHG4, TAGLN, IGFBP5, SBSN, CTSK, RAMP2, MZB1, S100A2, ACKR1, GNG11, IGHM, PLVAP, KRT5, FBN1, FBLN1, PLAC9, VCAN, CRYAB, SPRR2A, FBLN2, A2M, FSTL1, UBE2C, DPT, MFAP5, CCL20, C11orf96, AQP1, MFAP4, TNXB, SELE, COL4A1, RNASE1, LTF, SLPI, CTGF, SERPINF1, RGS5, CCL19, RAMP3, CLDN5, WISP2, COL4A2, PLPP3, NNMT, TIMP3, CYR61, SOD3, C1S, DIO2, SOX18, CXCL1, IGHA1, IGFBP6, CCL26, C10orf99, CALML3, FN1, TWIST2, C2CD4B, TM4SF1, LY6D, SERPINB3, PRRX1, CCR6, NR2F2, NDUFA4L2, TOP2A, COL14A1, EMCN, IVL, COL5A2, APOD, COL6A6, EGFL6, COL15A1, HLA-DRB5, IFI27, CTHRC1, EGFL7, RARRES2, CPE, PDGFRB, AEBP1, LGALS2, COL5A1, TNFAIP6, SPRR2D, COL12A1, CLDN4, BGN, TMEM176B, PTN, SPRR2E, GJB2, PMP22, APCDD1, COL6A5, ADGRL4, HPGDS, TWIST1, CH25H, COL17A1, FGFBP1, EDN2, CNFN, SFN, CRABP1, MEG3, CLEC14A, HTRA1, PODXL, ECSCR, MXRA8, IGLC2, CXCL3, SLIT3, CD24, CCL27, IL20, ACKR3, IGFL1, TCIM, DCT, LGALS7B, TMEM45A, F10, CD40LG, CDK1, SERPING1, DSC1, LRP1, PRELP, LMCD1, DEPP1, PDGFRA, PI15, CD34, ASPM, CSTA, ALDH1A1, SERPINB2, IL1R2, MYLK, IGFBP2, CD93, MGST1, JAM2, LHFPL6, IGLC3, STEAP4, PLEKHH2, FLT1, TMEM176A, MT1G, MYH11, WNT5A, DEFB1, SOSTDC1, DSP, COX7A1, VCAM1, SOX17, ID4, TACSTD2, THBS2, CYP1B1, RCN3, EDN1, KCTD12, CCNB2, ELN, SEMA3C, ENPP2, CHI3L2, TSPAN7, ISLR, HTRA3, OLFML3, SLURP1, SPINK5, C1QTNF3, CYP26B1, LTBP1, FKBP10, EPAS1, ANGPTL1, FMOD, ABI3BP, PLAT, SRPX, CAVIN3, ESAM, CCL23, TNFAIP2, BICC1, ZNF385D, CP, FAP, HES5, ADAMTS5, GJB6, CXCR6, CD248, TM4SF18, AXL, ECM1, ITIH5, MLANA, LGALS7, RND3, MUCL1, ASPN, FILIP1L, S100A14, HAS2, KLK7, TINAGL1, SNCG, NRN1, HSPG2, SERPINB13, SYNPO2, KRT23, COL23A1, CD27, ASS1, BCAM, MCTP1, SULT2B1, LAMB2, DSC2, EFEMP1, MMP7, CDH11, CRISPLD2, PDGFRL, PDK4, ARHGAP29, S100A7A, MT1M, HMMR, IL3RA, EREG, GAS1, ANPEP, WFDC1, PPP1R14A, NRP1, EMID1, MFAP2, GPX2, TPPP3, NDN, DDR2, VWF, ANGPTL2, EDNRA, FAM25A, TK1, FOXC1, MRC2, AKR1B10, FST, CENPW, LOXL2, DAB2, CHN1, CYYR1, RBP7, FAM198B, LIFR, SYT8, PLAU, RHOV, DSG1, LOX, IGFL2, NOV, MSX1, LMO2, ELF3, SEMA5A, MRGPRF, MS4A1, SDC2, LRRN4CL, CSF2RB, CSRP2, SFRP1, ITGBL1, KCNK7, CAVIN2, VASN, GJA4, BMP2, DEGS2, NRARP, IL6, LAMB3, MAP1B, NMU, MMP14, CDH5, PTGIS, CASP14, CYSRT1, C1QTNF1, WNT4, LAMC1, MMRN2, MEOX2, CTSL, THEM5, TPX2, SAA1, RNASE6, DLC1, MXRA5, GGT5, C3, LAMA4, OMD, ITGA1, KLK11, GPX8, PBK, ITGB5, THBD, SOX9, CXorf36, KREMEN2, FXYD3, MYCT1, MT1H, ADGRF5, OLFML2A, MAL2, NTM, CENPA, APOBEC3A, CCL7, CCNA2, HMCN1, PLAC4, TMEM204, ADAMTS4, NCCRP1, FAM30A, PKP1, PCDH18, IFIT1, ANGPTL4, VWA1, DSC3, FOXQ1, ALDH3A1, PTK7, ANLN, TROAP, PLK1, S100A16, MAFB, A4GALT, ANTXR1, IL33, DKK3, FAM111B, PDZK1IP1, SERPINB7, RUNX1T1, TNS1, ADM5, HOXD8, EMILIN1, APOC1, COL16A1, SGCE, ADAMTS2, NT5E, DLGAP5, ZWINT, CLDN1, UACA, RAB25, WWTR1, HSPB8, HCAR2, LGALSL, PRRX2, FJX1, OVOL1, TBX3, MYO1B, TGM3, SCUBE2, KDR, CD36, ACVRL1, PXDC1, EFNB2, SLCO2A1, FAM114A1, GPNMB, WNT3, EMP2, CCDC3, ITGB4, PDPN, PGF, LY6G6C, TNFRSF21, FKBP9, CDA, CEP55, SERPINB5, ANXA3, PALMD, ECM2, PPP1R3C, MATN2, CENPE, KRT31, LURAP1L, PRSS3, CDCA3, SELENOP, SELP, AURKB, NRP2, GTSE1, BBOX1, PPIC, RAI14, LPAR1, UBE2T, KIF23, RCAN2, KLK10, NUPR1, COL5A3, COL7A1, PDGFC, ST5, SERTAD4-AS1, CDH13, CXADR, SNAI2, MARVELD1, DDX3Y, TCEAL9, STXBP6, CDHR1, TMEM158, COPZ2, ITGA2, FRMD6, NFIB, NPW, GDPD2, KCNJ2, TMEM98, SOX7, CAV2, TMEM40, CLEC2A, IRX2, ITPRIPL2, NOSTRIN, TEAD1, DEPDC1, SPRED1, PDLIM4, FZD1, HNMT, PHGDH, KITLG, ABCA1, TENT5B, SDR16C5, FGFR3, LAMC2, C16orf45, EPPK1, PLSCR4, AKR1C1, OSBPL1A, LGALS3BP, IL1RN, HAS3, C1QTNF2, EPHX3, ECT2, RBMS3, IGLL5, PLA2G2A, PI3, IL1RL1, IL22, CHI3L1, PMEL, TYRP1, IGLV3-1, LCE3D, PRKAR2B, FABP4, PCOLCE2, WFDC2, HLA-DQA2, IGLC7, F13A1, CCL21, PRG4, TNFRSF11B, EDNRB, MMP1, MMP3, TCN1, IL17RB, FRZB, ADAMTS9, ENPP1, TFF3, GMPR, IGHD, CARD18, HIST1H1A, HAS1, MASP1, PAPPA, KRT75, STEAP1, PCAT19, COX4I2, ADAMDEC1, SPRR2G, INHBA, CLMP, CXCL10, CLEC9A, STMN2, BDKRB1, TMEM47, LINC02195, PTGDR2, MMRN1, HAMP, OLFML2B, FAM180B, ADGRA2, STC1, FABP3, TBX2, SMOC2, NOTCH3, AC020656.1, GPX3, EBF1, HCAR3, ITPKC, DPYSL3, CCL8, CLDN15, AKAP12, AC100801.1, KHDRBS3, KRT77, CLDN11, LRRC15, PTPRB, DCLK1, PTPRG, KLK5, CCL18, PPFIBP1, PID1, RHOJ, PDLIM3, GLDN, NKD2, PXDN, KANK2, NEXN, PODN, FAM13C, PROCR, NRGN, ANK2, ROBO2, MEOX1, ELOVL4, GPR153, TEX41, NID1, NEURL1B, MAOB, ANGPTL5, CAMK4, SPC25, AL161431.1, PALLD, HS3ST6, RERG, THBS4, KRT13, AVPR1A, PARD6G-AS1, PREX2, CPXM2, PTPRM, LMO1, CLEC3B, SYNPO, SERPINA12, PROS1, TMTC1, CAPNS2, WFDC5, MTUS1, FCRL6, EDIL3, ACKR4, VGLL3, CACNB4, RRAS, THSD4PC_ 1 
Positive:  NKG7, S100A4, VIM, GNLY, IL32, SRGN, LGALS1, CCL4, CCL5, CD69 
       GZMA, GZMB, CD52, KLRB1, TMSB4X, CTSW, HCST, CST7, CXCR4, CYBA 
       PTPRC, IFITM2, TYROBP, CORO1A, EMP3, KLRD1, TRDC, ALOX5AP, CCL3, B2M 
Negative:  KRT14, KRT1, DMKN, KRT10, FABP5, PERP, MT1X, AQP3, LYPD3, HSPB1 
       TXN, RPLP1, CA2, APOE, PHLDA2, S100A11, RPS18, GSTP1, ANXA2, CD9 
       RPS8, HES1, DYNLL1, JUP, DST, ALDH2, CRABP2, DEGS1, MT2A, DBI 
PC_ 2 
Positive:  COL6A2, VIM, COL1A1, COL6A1, COL6A3, LGALS1, IGFBP4, IGFBP7, TIMP2, S100A6 
       PCOLCE, SELENOM, CFD, S100A4, C1R, CFH, CALD1, CST3, GSN, TIMP1 
       CLU, FTH1, COL18A1, ADIRF, CD63, MYL9, FTL, TCF4, PTGDS, SERPINE2 
Negative:  NKG7, GNLY, CCL4, CCL5, GZMA, GZMB, CST7, CCL3, TYROBP, KLRD1 
       CCL4L2, KRT1, KRT10, CTSW, DMKN, PRF1, KRT14, HCST, FCER1G, SRGN 
       IFNG, CD69, XCL2, FABP5, CD7, XCL1, GZMH, CD247, FGFBP2, TRDC 
PC_ 3 
Positive:  IL32, KLRB1, AREG, IL13, CD52, IL7R, LTB, BIRC3, CD69, RGS1 
       RGCC, SRGN, SAMSN1, ALOX5AP, CXCR4, S100A4, JUNB, PTGS2, RPL10, TNFRSF18 
       NBAS, ZNF331, DUSP4, FXYD5, JAML, ZFP36L2, CREM, EEF1A1, BATF, SLC2A3 
Negative:  GNLY, NKG7, CCL4, CCL5, GZMA, CCL3, COL6A2, COL1A1, KRT1, COL6A1 
       CST7, CCL4L2, COL6A3, DMKN, TYROBP, IGFBP7, IGFBP4, PRF1, KLRD1, FGFBP2 
       GZMB, TIMP2, CFD, KRT10, IFNG, PCOLCE, CST3, GZMH, FCGR3A, FCER1G 
PC_ 4 
Positive:  KRT14, DST, MT2A, CAV1, STMN1, PTTG1, IFITM3, CD74, CXCL2, HMGB2 
       CENPF, MT1E, NUSAP1, PDLIM1, GADD45B, ITGA6, TUBA1B, CTNNAL1, PTMA, CCNB1 
       JUN, HIST1H4C, CCL4, SERPINH1, HSPA1A, C12orf75, FOS, HLA-DRA, CCL3, PCLAF 
Negative:  KRT1, KRT10, DMKN, FABP5, S100A4, IL32, LYPD3, LGALS1, VIM, CD52 
       PERP, KLRB1, IL13, SRGN, CD69, CRABP2, ALOX5AP, APOE, GLTP, DBI 
       CST3, COL1A1, PHLDA2, COL6A2, IL7R, COL6A1, LGALS3, PTPRC, SAMSN1, CXCR4 
PC_ 5 
Positive:  CD74, HLA-DRA, HLA-DRB1, HLA-DPA1, HLA-DPB1, HLA-DQA1, IGFBP7, HLA-DQB1, PECAM1, HLA-DMA 
       VIM, C1orf54, CST3, LYZ, KRT1, CPVL, GIMAP7, NPDC1, KLF2, ENG 
       RCAN1, SLC9A3R2, GIMAP4, ITM2A, HLA-DMB, KRT10, DMKN, CTSH, COTL1, RGS16 
Negative:  COL1A1, KRT14, COL6A2, COL6A1, COL6A3, S100A4, CFD, PCOLCE, C1R, KLRB1 
       TIMP2, AREG, MT2A, CD69, LGALS1, FTH1, CFH, TIMP1, DST, IL32 
       EMP3, COL18A1, SELENOM, S100A6, SERPINE2, PTGDS, MT1E, CYBRD1, CD63, FXYD1 
# Before running Harmony, make sure that the metadata of our Seurat object contains one (or several) variable(s) describing the factor(s) we want to integrate on (e.g. one variable for patient sample, one variable for condition)
harmonized_seurat <- RunHarmony(seurat_merged_rmd,
                group.by.vars = c("Sample", "Condition"),
                reduction = "pca", assay.use = "SCT", reduction.save = "harmony")
Transposing data matrix
Initializing state using k-means centroids initialization
Harmony 1/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 2/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 3/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 4/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 5/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 6/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony converged after 6 iterations
# Do UMAP and clustering using Harmony embedding instead of PCA
harmonized_seurat <- harmonized_seurat %>%
  RunUMAP(reduction = "harmony", assay = "SCT", dims = 1:40) %>%
  FindNeighbors(reduction = "harmony") %>%
  FindClusters(resolution = c(0.2, 0.4, 0.6, 0.8, 1.0, 1.2)) # The result of different resolution is stored in the SCT_snn_res.X.X column of meta.data.
16:46:09 UMAP embedding parameters a = 0.9922 b = 1.112
16:46:09 Read 17812 rows and found 40 numeric columns
16:46:09 Using Annoy for neighbor search, n_neighbors = 30
16:46:09 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:46:10 Writing NN index file to temp file /var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T//RtmpN5jY3Z/filed94448741deb
16:46:10 Searching Annoy index using 1 thread, search_k = 3000
16:46:14 Annoy recall = 100%
16:46:15 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
16:46:16 Initializing from normalized Laplacian + noise (using RSpectra)
16:46:17 Commencing optimization for 200 epochs, with 813778 positive edges
16:46:17 Using rng type: pcg
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:46:23 Optimization finished
Computing nearest neighbor graph
Computing SNN
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9588
Number of communities: 11
Elapsed time: 1 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9330
Number of communities: 15
Elapsed time: 1 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9135
Number of communities: 17
Elapsed time: 2 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8982
Number of communities: 21
Elapsed time: 1 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8860
Number of communities: 24
Elapsed time: 1 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 17812
Number of edges: 601068

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8754
Number of communities: 28
Elapsed time: 1 seconds
# Visualize UMAP
p3 <- DimPlot(harmonized_seurat, reduction = "umap", label = TRUE, group.by = "Sample")
p4 <- DimPlot(harmonized_seurat, reduction = "umap", label = TRUE, group.by = "Condition")

p3 + p4


# Define the RDS filename with the directory path
rds_filename3 <- paste0("/Users/yunchichen/113-2_scRNA/final_project/processed_data/", "harmony_integrated", ".rds")

# Save the Seurat object to the RDS file
saveRDS(harmonized_seurat, file = rds_filename3)

Cluster identification

To choose the correct Seurat function for identifying markers in different circumstances, refer to this tutorial. In brief, when the goal is to (1) identify markers for each cluster, regardless of the condition, we should use FindConservedMarkers(). Notably, since we used SCTransform() in our Harmony workflow, the default assay will be set to SCT. Therefore, we need to reset the default assay to RNA before using FindConservedMarkers(). (2) To identify DEGs between conditions, we should first use PrepSCTFindMarkers(), followed by FindMarkers() to identify the DEGs in the same cluster of cells across different conditions, as outlined in this tutorial. Alternatively, we can use FindMarkers() with RNA layer to to identify DEGs between conditions.

Annotate by FindConservedMarkers()

library(dplyr)
library(purrr)
library(tibble)

# Read RDS
harmonized_seurat <- readRDS("/Users/yunchichen/113-2_scRNA/final_project/processed_data/harmony_integrated.rds")

# After running Harmony or performing other normalization steps, use JoinLayers
harmonized_seurat[["RNA"]] <- JoinLayers(harmonized_seurat[["RNA"]])

# Set the active identity class to SCT_snn_res.0.6
Idents(harmonized_seurat) <- harmonized_seurat$SCT_snn_res.0.6

# Set default assay to RNA
DefaultAssay(harmonized_seurat) <- "RNA"
# Visualize UMAP
p1 <- DimPlot(harmonized_seurat, reduction = "umap", group.by = "Condition", label = TRUE)
p2 <- DimPlot(harmonized_seurat, reduction = "umap", group.by = "SCT_snn_res.0.6", label = TRUE) # The cluster number is the same (17) to original paper when resolution is 0.6
p1 + p2

# Create function to get conserved markers for any given cluster
get_conserved <- function(seurat_object, cluster){
  FindConservedMarkers(seurat_object,
                       ident.1 = cluster,
                       grouping.var = "Condition",
                       only.pos = TRUE) %>%
    rownames_to_column(var = "gene") %>%
    left_join(y = unique(annotations[, c("gene_name", "description")]),
               by = c("gene" = "gene_name")) %>%
    cbind(cluster_id = cluster, .)
}

# Iterate function across desired clusters
conserved_markers <- map_dfr(0:16, function(cluster) {
  get_conserved(harmonized_seurat, cluster = cluster)
})
Testing group AD: (0) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 8, 13, 12, 16)
Testing group NHS: (0) vs (1, 8, 9, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (1) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 9, 0, 8, 13, 12, 16)
Testing group NHS: (1) vs (8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (2) vs (4, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (2) vs (1, 8, 9, 0, 6, 3, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (3) vs (4, 2, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (3) vs (1, 8, 9, 0, 6, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (4) vs (2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (4) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 16)
Testing group AD: (5) vs (4, 2, 3, 15, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (5) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 11, 10, 4, 16)
Testing group AD: (6) vs (4, 2, 3, 15, 5, 11, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (6) vs (1, 8, 9, 0, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (7) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (7) vs (1, 8, 9, 0, 6, 3, 2, 14, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (8) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 13, 12, 16)
Testing group NHS: (8) vs (1, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (9) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 0, 8, 13, 12, 16)
Testing group NHS: (9) vs (1, 8, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (10) vs (4, 2, 3, 15, 5, 11, 6, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (10) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 4, 16)
Testing group AD: (11) vs (4, 2, 3, 15, 5, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (11) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 10, 4, 16)
Testing group AD: (12) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 16)
Testing group NHS: (12) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 13, 5, 11, 10, 4, 16)
Testing group AD: (13) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 12, 16)
Testing group NHS: (13) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 5, 11, 10, 4, 16)
Testing group AD: (14) vs (4, 2, 3, 15, 5, 11, 6, 10, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (14) vs (1, 8, 9, 0, 6, 3, 2, 7, 15, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (15) vs (4, 2, 3, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12, 16)
Testing group NHS: (15) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 12, 13, 5, 11, 10, 4, 16)
Testing group AD: (16) vs (4, 2, 3, 15, 5, 11, 6, 10, 14, 7, 1, 9, 0, 8, 13, 12)
Testing group NHS: (16) vs (1, 8, 9, 0, 6, 3, 2, 14, 7, 15, 12, 13, 5, 11, 10, 4)
# Filter the top 5 markers for each cluster 
log2fc_threshold <- 1    # Minimum log2 fold change
pct_diff_threshold <- 0.3  # Minimum absolute difference between pct.1 and pct.2

top5 <- conserved_markers %>%
  group_by(cluster_id) %>%
  filter(abs(AD_pct.1 - AD_pct.2) > pct_diff_threshold &    # Difference in percentage of cells expressing the gene
         abs(NHS_pct.1 - NHS_pct.2) > pct_diff_threshold &   # Difference in percentage for NHS condition
         (abs(AD_avg_log2FC) > log2fc_threshold | abs(NHS_avg_log2FC) > log2fc_threshold) &  # Large fold change
          NHS_pct.1 > 0.6 &
          AD_pct.1 > 0.6) %>%
  slice_head(n = 5) %>%
  ungroup()

# Check the top 5 markers selected
View(top5)

# Create a heatmap for the selected markers
DoHeatmap(harmonized_seurat, features = top5$gene) + NoLegend()

# Filter the top 10 markers for each cluster 
log2fc_threshold <- 1    # Minimum log2 fold change
pct_diff_threshold <- 0.3  # Minimum absolute difference between pct.1 and pct.2

top10 <- conserved_markers %>%
  group_by(cluster_id) %>%
  filter(abs(AD_pct.1 - AD_pct.2) > pct_diff_threshold &    # Difference in percentage of cells expressing the gene
         abs(NHS_pct.1 - NHS_pct.2) > pct_diff_threshold &   # Difference in percentage for NHS condition
         (abs(AD_avg_log2FC) > log2fc_threshold | abs(NHS_avg_log2FC) > log2fc_threshold) &  # Large fold change
          NHS_pct.1 > 0.6 &
          AD_pct.1 > 0.6) %>%
  slice_head(n = 10) %>%
  ungroup()

# Check the top 10 markers selected
View(top10)

# Create a heatmap for the selected markers
DoHeatmap(harmonized_seurat, features = top10$gene) + NoLegend()
Warning: The following features were omitted as they were not found in the scale.data slot for the RNA assay: GATA3, TNFRSF18, DEK, CBR1, EMP2, FXYD5

After inspecting the top5/10 genes, the annotation is as follow:

1: NK 2: KC 4: KC 5: KC 6: NK 9: ILCs 10: FB 13: B 16: ILCs

Some cluster markers do not correspond to a single cell type (cluster 0, 3, 7, 8, 11, 12, 14, 15). Moreover, T cells (T), Melanocytes (MEL), Phagocytes (PH), Endothelial cells (EC), and Smooth muscle cells (SMC) are present in the paper’s clusters but absent in ours.

To resolve these issues, we inspect the markers from the paper as well as the canonical markers in each cluster.

Annotate by the markers from the paper and by the canonical markers

# Plot a dot plot to visualize the marker genes from the paper in each cluster

library(ggplot2)

marker_genes <- c(
  # ILCs
  "PTPRC", "KLRB1", "IL7R",
  # NK cells
  "KLRD1",
  # Keratinocytes (KC)
  "KRT1", "KRT5",
  # T cells (T)
  "CD3D",
  # Fibroblasts (FB)
  "COL6A1",
  # B-cell lineage (B)
  "CD79A", "IGHG1",
  # Phagocytes (PH)
  "LYZ",
  # Endothelial cells (EC)
  "CLEC14A", "PECAM1",
  # Smooth muscle cells (SMC)
  "TAGLN", "ACTA2",
  # Melanocytes (MEL)
  "MLANA"
)

DotPlot(harmonized_seurat, features = marker_genes) + 
  scale_color_gradient2(low = "blue", mid = "lightgrey", high = "red") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Scale for colour is already present.
Adding another scale for colour, which will replace the existing scale.

From the result, the annotation is as follow: 0: ILCs 1: NK 2: KC 3: ILCs+KC 4: KC 5: KC 6: NK 7: KC 8: ILCs 9: ILCs 10: FB 11: SMC+EC 12: ILCs 13: B 14: ILCs 15: PH 16: ILCs

Since T cells (T) and Melanocytes (MEL) were not found, we plot more canonical markers to check the annotation and also add cell type label on genes.

# Using ggh4x and dot plot to visulize canonical markers

# install.packages("ggh4x")
# library(ggh4x)

gene_celltype_df <- data.frame(
  gene = c(
    # ILCs
    "PTPRC", "KLRB1", "IL7R",
    # NK cells
    "KLRD1", "NKG7", "GNLY", "GZMB",
    # T cells
    "CD3D", "CD4", "CD8A", "TRAC", "TRBC1",
    # Keratinocytes
    "KRT1", "KRT5", "KRT10",
    # Fibroblasts
    "COL6A1", "COL1A1", "COL1A2",
    # B-lineage cells (b cells + plasma cells)
    "CD79A", "IGHG1", "MZB1", "JCHAIN",
    # Phagocytes
    "LYZ",
    # Endothelial cells
    "CLEC14A", "PECAM1",
    # Smooth muscle cells
    "TAGLN", "ACTA2",
    # Melanocytes
    "MLANA",
    # Dendritic cells
    "CD1A", "CD209",
    # Mast cells
    "TPSAB1", "CPA3"
  ),
  
  cell_type = c(
    rep("ILCs", 3),
    rep("NK", 4),
    rep("T", 5),
    rep("KC", 3),
    rep("FB", 3),
    rep("B", 4),
    rep("PH", 1),
    rep("EC", 2),
    rep("SMC", 2),
    rep("MEL", 1),
    rep("DC", 2),
    rep("MC", 2)
  ),
  stringsAsFactors = FALSE
)


marker_genes <- gene_celltype_df$gene

p <- DotPlot(harmonized_seurat, features = marker_genes) + 
  scale_color_gradient2(low = "blue", mid = "lightgrey", high = "red") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Scale for colour is already present.
Adding another scale for colour, which will replace the existing scale.
p$data <- p$data %>%
  left_join(gene_celltype_df, by = c("features.plot" = "gene"))

p <- p +
scale_x_discrete(position = "top") +  # move x axis to the top, making it like the title of each features
facet_nested(~cell_type + features.plot, scales = "free_x", space = "free_x") +
guides(x = guide_axis_nested(check.overlap = TRUE)) +
theme(
  axis.text.x = element_text(angle = 45, hjust = 0),
  strip.text.x = element_text(size = 12, face = "bold"),
  panel.spacing.x = unit(0.2, "lines")
)

ggsave(filename = "annotation.png", plot = p, width = 15, height = 8, dpi = 300)

p

After plotting additional marker genes, we still did not identify a distinct T cell cluster. A likely explanation is that the authors sorted for CD45⁺ Lin⁻ CD3⁻ cells, thereby excluding CD3-expressing T cells during the sorting step. Regarding melanocytes, the cluster identified by the authors was small and may have been removed during doublet filtering or other processing steps.

Interestingly, we observed that cells in certain NK clusters (cluster 1) and ILC clusters (clusters 0 and 16) express TRBC1 without sufficient expression of other T cell markers, as shown in the feature plots below. From the feature plots, the NK and the ILCs clusters are correlated to their marker expression, however the subset of ILCs cannot be directly distinguished by the conventional marker.

# T cell markers (TRBC1 should be T cell markers but we observe ILCs and NK express it)
FeaturePlot(harmonized_seurat, features = c("CD3D", "CD3E", "CD3G", "TRBC1"))

FeaturePlot(harmonized_seurat, features = c("CD3D", "CD3E", "CD3G", "TRAC"))

# ILCs and NK markers
FeaturePlot(harmonized_seurat, features = c("IL7R", "KLRB1", "GNLY", "NKG7", "KLRD1"))


# ILC1
FeaturePlot(harmonized_seurat, features = c("IL7R", "KLRB1", "TBX21"), label = TRUE)

# ILC2
FeaturePlot(harmonized_seurat, features = c("IL7R", "KLRB1", "GATA3", "RORA"), label = TRUE)

# ILC3
FeaturePlot(harmonized_seurat, features = c("IL7R", "KLRB1", "RORC", "AHR"), label = TRUE)

NA
NA
# Visualize the annotation with umap

cluster_ids <- levels(harmonized_seurat$SCT_snn_res.0.6)
new_cluster_names <- c(
  "ILCs", "NK", "KC", "UK", "KC", 
  "KC", "NK", "KC", "ILCs+NK", "ILCs",
  "FB", "EC+SMC", "ILCs", "B", "UK", "PH", "ILCs"
)

names(new_cluster_names) <- cluster_ids

harmonized_seurat$celltype.paper <- plyr::mapvalues(
  x = harmonized_seurat$SCT_snn_res.0.6,
  from = cluster_ids,
  to = new_cluster_names
)

table(harmonized_seurat$celltype.paper)

   ILCs      NK      KC      UK ILCs+NK      FB  EC+SMC       B      PH 
   4934    2861    5743    2068     582     499     472     394     259 
Idents(harmonized_seurat) <- harmonized_seurat$celltype.paper

p3 <- DimPlot(harmonized_seurat, reduction = "umap", label = TRUE) +
  ggtitle("Annotation by canonical markers") +
  theme(plot.title = element_text(hjust = 0.5))

p2 + p3

saveRDS(harmonized_seurat, file = "/Users/yunchichen/113-2_scRNA/final_project/processed_data/canonical_annotated_seurat.rds")

Compare the marker genes to those in the paper

# Create function to get conserved markers for any given cluster
get_conserved <- function(seurat_object, cluster){
  FindConservedMarkers(seurat_object,
                       ident.1 = cluster,
                       grouping.var = "celltype.paper",  # Use the celltype.paper for grouping
                       only.pos = TRUE) %>%
    rownames_to_column(var = "gene") %>%
    left_join(y = unique(annotations[, c("gene_name", "description")]),
               by = c("gene" = "gene_name")) %>%
    cbind(cluster_id = cluster, .)
}

# Iterate function across desired clusters
conserved_markers <- map_dfr(0:16, function(cluster) {
  get_conserved(harmonized_seurat, cluster = cluster)
})

# View the conserved markers
View(conserved_markers)

The conserved markers were manually compared to the DEGs reported in the paper (Fig. 3G). In the ILC clusters (clusters 0, 9, 12, and 16), we identified similar DEGs to those described in the paper, including CD52, IL32, FXYD5, IL7R, and KLRB1. For NK cells (clusters 1 and 6), we found comparable DEGs such as NKG7, GNLY, GZMA, CCL4, CCL5, CST7, TYROBP, KLRD1, and CTSW.

Communication pathways by CellChat

This part of the code explores several functions of CellChat. However, comparison with the published results was only performed in the section titled ‘Visualize chord plot to understand the interaction among cell types for a specific pathway’.

Compute and visualize the aggregated cell-cell communication network

# install.packages("BiocManager")
# BiocManager::install("BiocNeighbors")
# devtools::install_github("sqjin/Cellchat")
library(CellChat)
library(Seurat)
library(reticulate)
library(patchwork)
library(circlize)
options(stringsAsFactors = FALSE)
# Create CellChat object
data.input <- GetAssayData(harmonized_seurat, assay = "RNA", slot = "data")
labels <- Idents(harmonized_seurat)
meta <- data.frame(group = labels, row.names = names(labels))
cellchat <- createCellChat(object = data.input, meta = meta, group.by = "group")
[1] "Create a CellChat object from a data matrix"
Set cell identities for the new CellChat object 
The cell groups used for CellChat analysis are  ILCs NK KC UK ILCs+NK FB EC+SMC B PH 
saveRDS(cellchat, file = "/Users/yunchichen/113-2_scRNA/final_project/processed_data/cellchat_seurat.rds")
# Load ligand-receptor interaction database
CellChatDB.human <- CellChatDB.human

# Decide which category of data to use
showDatabaseCategory(CellChatDB.human)

CellChatDB.use <- subsetDB(CellChatDB.human, search = "Secreted Signaling")
cellchat@DB <- CellChatDB.use

# Subset the object, making cellchat@data.signaling from <0 x 0 matrix> to 744 x 17812 sparse Matrix of class "dgCMatrix", which means there are 744 genes from CellChatDB.use database that are expressed in our cellchat object
cellchat <- subsetData(cellchat) 
# Pre-processing the expression data
cellchat <- identifyOverExpressedGenes(cellchat)

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 8 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 32% ~01s          
  |+++++++++++++++++                                 | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~01s          
  |++                                                | 4 % ~01s          
  |+++                                               | 6 % ~01s          
  |++++                                              | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 11% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 26% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |+++++++++++++++++                                 | 32% ~01s          
  |+++++++++++++++++                                 | 34% ~01s          
  |++++++++++++++++++                                | 36% ~01s          
  |+++++++++++++++++++                               | 38% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 12% ~02s          
  |+++++++                                           | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |++++++++                                          | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 15% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 9 % ~02s          
  |++++++                                            | 10% ~01s          
  |+++++++                                           | 12% ~01s          
  |+++++++                                           | 14% ~01s          
  |++++++++                                          | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 38% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~06s          
  |+++++++++++++                                     | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |++++++++++++++                                    | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |+++++++++++++++++                                 | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |++++++++++++++++++                                | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |+++++++++++++++++++                               | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |++++++++++++++++++++                              | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |+++++++++++++++++++++                             | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 3 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 7 % ~04s          
  |++++                                              | 8 % ~04s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01s          
  |++                                                | 3 % ~01s          
  |++                                                | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 10% ~01s          
  |++++++                                            | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 17% ~01s          
  |+++++++++                                         | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |+++++++++++                                       | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |++++++++++++++++++                                | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |+++++++++++++++++++++++++++++                     | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~01s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~01s          
  |+++                                               | 5 % ~01s          
  |++++                                              | 6 % ~01s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 8 % ~01s          
  |+++++                                             | 9 % ~01s          
  |++++++                                            | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |+++++++                                           | 12% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 14% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |+++++++++                                         | 17% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 19% ~01s          
  |+++++++++++                                       | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 22% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 24% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 26% ~01s          
  |++++++++++++++                                    | 27% ~01s          
  |+++++++++++++++                                   | 28% ~01s          
  |+++++++++++++++                                   | 29% ~01s          
  |++++++++++++++++                                  | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 32% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |+++++++++++++++++++                               | 36% ~01s          
  |+++++++++++++++++++                               | 37% ~01s          
  |++++++++++++++++++++                              | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |+++++++++++++++++++++                             | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
cellchat <- identifyOverExpressedInteractions(cellchat)

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~00s          
  |++                                                | 3 % ~00s          
  |++                                                | 4 % ~00s          
  |+++                                               | 5 % ~00s          
  |++++                                              | 6 % ~00s          
  |++++                                              | 8 % ~00s          
  |+++++                                             | 9 % ~00s          
  |++++++                                            | 10% ~00s          
  |++++++                                            | 11% ~00s          
  |+++++++                                           | 13% ~00s          
  |+++++++                                           | 14% ~00s          
  |++++++++                                          | 15% ~00s          
  |+++++++++                                         | 16% ~00s          
  |+++++++++                                         | 18% ~00s          
  |++++++++++                                        | 19% ~00s          
  |+++++++++++                                       | 20% ~00s          
  |+++++++++++                                       | 22% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |+++++++++++++                                     | 24% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |++++++++++++++                                    | 28% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++                                  | 30% ~00s          
  |++++++++++++++++                                  | 32% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++                                | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 46% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++                         | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |++++++++++++++++++++++++++                        | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++                      | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~00s          
  |+                                                 | 2 % ~00s          
  |++                                                | 3 % ~00s          
  |++                                                | 4 % ~00s          
  |+++                                               | 5 % ~00s          
  |+++                                               | 6 % ~00s          
  |++++                                              | 7 % ~00s          
  |++++                                              | 8 % ~00s          
  |+++++                                             | 9 % ~00s          
  |+++++                                             | 10% ~00s          
  |++++++                                            | 11% ~00s          
  |++++++                                            | 12% ~00s          
  |+++++++                                           | 13% ~00s          
  |+++++++                                           | 14% ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++                                          | 16% ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++                                         | 18% ~00s          
  |++++++++++                                        | 19% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++                                       | 22% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++                                      | 24% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++                                     | 26% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |++++++++++++++                                    | 28% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++                                  | 32% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++                                 | 34% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |+++++++++++++++++++                               | 37% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |++++++++++++++++++++++                            | 44% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |+++++++++++++++++++++++                           | 46% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |++++++++++++++++++++++++                          | 48% ~00s          
  |+++++++++++++++++++++++++                         | 49% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++                        | 51% ~00s          
  |++++++++++++++++++++++++++                        | 52% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++                     | 58% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 63% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++                | 68% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
# Optional: project gene expression data onto protein-protein interaction (PPI)
cellchat <- projectData(cellchat, PPI.human)

# Compute the communication probability and infer cellular communication network
# cellchat <- computeCommunProb(cellchat)
cellchat <- computeCommunProb(cellchat, raw.use = FALSE) # use the projected data
triMean is used for calculating the average gene expression per cell group. 
[1] ">>> Run CellChat on sc/snRNA-seq data <<< [2025-05-24 01:01:51.321298]"

  |                                                                                                        
  |                                                                                                  |   0%
  |                                                                                                        
  |=                                                                                                 |   1%
  |                                                                                                        
  |==                                                                                                |   2%
  |                                                                                                        
  |===                                                                                               |   3%
  |                                                                                                        
  |====                                                                                              |   4%
  |                                                                                                        
  |=====                                                                                             |   5%
  |                                                                                                        
  |=====                                                                                             |   6%
  |                                                                                                        
  |======                                                                                            |   6%
  |                                                                                                        
  |======                                                                                            |   7%
  |                                                                                                        
  |=======                                                                                           |   7%
  |                                                                                                        
  |=======                                                                                           |   8%
  |                                                                                                        
  |========                                                                                          |   8%
  |                                                                                                        
  |========                                                                                          |   9%
  |                                                                                                        
  |=========                                                                                         |   9%
  |                                                                                                        
  |=========                                                                                         |  10%
  |                                                                                                        
  |==========                                                                                        |  10%
  |                                                                                                        
  |==========                                                                                        |  11%
  |                                                                                                        
  |===========                                                                                       |  11%
  |                                                                                                        
  |===========                                                                                       |  12%
  |                                                                                                        
  |============                                                                                      |  12%
  |                                                                                                        
  |============                                                                                      |  13%
  |                                                                                                        
  |=============                                                                                     |  13%
  |                                                                                                        
  |=============                                                                                     |  14%
  |                                                                                                        
  |==============                                                                                    |  14%
  |                                                                                                        
  |==============                                                                                    |  15%
  |                                                                                                        
  |===============                                                                                   |  15%
  |                                                                                                        
  |===============                                                                                   |  16%
  |                                                                                                        
  |================                                                                                  |  16%
  |                                                                                                        
  |================                                                                                  |  17%
  |                                                                                                        
  |=================                                                                                 |  17%
  |                                                                                                        
  |=================                                                                                 |  18%
  |                                                                                                        
  |==================                                                                                |  18%
  |                                                                                                        
  |==================                                                                                |  19%
  |                                                                                                        
  |===================                                                                               |  19%
  |                                                                                                        
  |===================                                                                               |  20%
  |                                                                                                        
  |====================                                                                              |  20%
  |                                                                                                        
  |====================                                                                              |  21%
  |                                                                                                        
  |=====================                                                                             |  21%
  |                                                                                                        
  |=====================                                                                             |  22%
  |                                                                                                        
  |======================                                                                            |  22%
  |                                                                                                        
  |======================                                                                            |  23%
  |                                                                                                        
  |=======================                                                                           |  23%
  |                                                                                                        
  |=======================                                                                           |  24%
  |                                                                                                        
  |========================                                                                          |  24%
  |                                                                                                        
  |========================                                                                          |  25%
  |                                                                                                        
  |=========================                                                                         |  25%
  |                                                                                                        
  |=========================                                                                         |  26%
  |                                                                                                        
  |==========================                                                                        |  26%
  |                                                                                                        
  |==========================                                                                        |  27%
  |                                                                                                        
  |===========================                                                                       |  27%
  |                                                                                                        
  |===========================                                                                       |  28%
  |                                                                                                        
  |============================                                                                      |  28%
  |                                                                                                        
  |============================                                                                      |  29%
  |                                                                                                        
  |=============================                                                                     |  29%
  |                                                                                                        
  |=============================                                                                     |  30%
  |                                                                                                        
  |==============================                                                                    |  30%
  |                                                                                                        
  |==============================                                                                    |  31%
  |                                                                                                        
  |===============================                                                                   |  31%
  |                                                                                                        
  |===============================                                                                   |  32%
  |                                                                                                        
  |================================                                                                  |  32%
  |                                                                                                        
  |================================                                                                  |  33%
  |                                                                                                        
  |=================================                                                                 |  33%
  |                                                                                                        
  |=================================                                                                 |  34%
  |                                                                                                        
  |==================================                                                                |  34%
  |                                                                                                        
  |==================================                                                                |  35%
  |                                                                                                        
  |===================================                                                               |  35%
  |                                                                                                        
  |===================================                                                               |  36%
  |                                                                                                        
  |====================================                                                              |  36%
  |                                                                                                        
  |====================================                                                              |  37%
  |                                                                                                        
  |=====================================                                                             |  37%
  |                                                                                                        
  |=====================================                                                             |  38%
  |                                                                                                        
  |======================================                                                            |  38%
  |                                                                                                        
  |======================================                                                            |  39%
  |                                                                                                        
  |=======================================                                                           |  39%
  |                                                                                                        
  |=======================================                                                           |  40%
  |                                                                                                        
  |========================================                                                          |  40%
  |                                                                                                        
  |========================================                                                          |  41%
  |                                                                                                        
  |=========================================                                                         |  41%
  |                                                                                                        
  |=========================================                                                         |  42%
  |                                                                                                        
  |==========================================                                                        |  42%
  |                                                                                                        
  |==========================================                                                        |  43%
  |                                                                                                        
  |===========================================                                                       |  43%
  |                                                                                                        
  |===========================================                                                       |  44%
  |                                                                                                        
  |============================================                                                      |  44%
  |                                                                                                        
  |============================================                                                      |  45%
  |                                                                                                        
  |=============================================                                                     |  46%
  |                                                                                                        
  |==============================================                                                    |  47%
  |                                                                                                        
  |===============================================                                                   |  48%
  |                                                                                                        
  |================================================                                                  |  49%
  |                                                                                                        
  |=================================================                                                 |  50%
  |                                                                                                        
  |==================================================                                                |  51%
  |                                                                                                        
  |===================================================                                               |  52%
  |                                                                                                        
  |====================================================                                              |  53%
  |                                                                                                        
  |=====================================================                                             |  54%
  |                                                                                                        
  |======================================================                                            |  55%
  |                                                                                                        
  |======================================================                                            |  56%
  |                                                                                                        
  |=======================================================                                           |  56%
  |                                                                                                        
  |=======================================================                                           |  57%
  |                                                                                                        
  |========================================================                                          |  57%
  |                                                                                                        
  |========================================================                                          |  58%
  |                                                                                                        
  |=========================================================                                         |  58%
  |                                                                                                        
  |=========================================================                                         |  59%
  |                                                                                                        
  |==========================================================                                        |  59%
  |                                                                                                        
  |==========================================================                                        |  60%
  |                                                                                                        
  |===========================================================                                       |  60%
  |                                                                                                        
  |===========================================================                                       |  61%
  |                                                                                                        
  |============================================================                                      |  61%
  |                                                                                                        
  |============================================================                                      |  62%
  |                                                                                                        
  |=============================================================                                     |  62%
  |                                                                                                        
  |=============================================================                                     |  63%
  |                                                                                                        
  |==============================================================                                    |  63%
  |                                                                                                        
  |==============================================================                                    |  64%
  |                                                                                                        
  |===============================================================                                   |  64%
  |                                                                                                        
  |===============================================================                                   |  65%
  |                                                                                                        
  |================================================================                                  |  65%
  |                                                                                                        
  |================================================================                                  |  66%
  |                                                                                                        
  |=================================================================                                 |  66%
  |                                                                                                        
  |=================================================================                                 |  67%
  |                                                                                                        
  |==================================================================                                |  67%
  |                                                                                                        
  |==================================================================                                |  68%
  |                                                                                                        
  |===================================================================                               |  68%
  |                                                                                                        
  |===================================================================                               |  69%
  |                                                                                                        
  |====================================================================                              |  69%
  |                                                                                                        
  |====================================================================                              |  70%
  |                                                                                                        
  |=====================================================================                             |  70%
  |                                                                                                        
  |=====================================================================                             |  71%
  |                                                                                                        
  |======================================================================                            |  71%
  |                                                                                                        
  |======================================================================                            |  72%
  |                                                                                                        
  |=======================================================================                           |  72%
  |                                                                                                        
  |=======================================================================                           |  73%
  |                                                                                                        
  |========================================================================                          |  73%
  |                                                                                                        
  |========================================================================                          |  74%
  |                                                                                                        
  |=========================================================================                         |  74%
  |                                                                                                        
  |=========================================================================                         |  75%
  |                                                                                                        
  |==========================================================================                        |  75%
  |                                                                                                        
  |==========================================================================                        |  76%
  |                                                                                                        
  |===========================================================================                       |  76%
  |                                                                                                        
  |===========================================================================                       |  77%
  |                                                                                                        
  |============================================================================                      |  77%
  |                                                                                                        
  |============================================================================                      |  78%
  |                                                                                                        
  |=============================================================================                     |  78%
  |                                                                                                        
  |=============================================================================                     |  79%
  |                                                                                                        
  |==============================================================================                    |  79%
  |                                                                                                        
  |==============================================================================                    |  80%
  |                                                                                                        
  |===============================================================================                   |  80%
  |                                                                                                        
  |===============================================================================                   |  81%
  |                                                                                                        
  |================================================================================                  |  81%
  |                                                                                                        
  |================================================================================                  |  82%
  |                                                                                                        
  |=================================================================================                 |  82%
  |                                                                                                        
  |=================================================================================                 |  83%
  |                                                                                                        
  |==================================================================================                |  83%
  |                                                                                                        
  |==================================================================================                |  84%
  |                                                                                                        
  |===================================================================================               |  84%
  |                                                                                                        
  |===================================================================================               |  85%
  |                                                                                                        
  |====================================================================================              |  85%
  |                                                                                                        
  |====================================================================================              |  86%
  |                                                                                                        
  |=====================================================================================             |  86%
  |                                                                                                        
  |=====================================================================================             |  87%
  |                                                                                                        
  |======================================================================================            |  87%
  |                                                                                                        
  |======================================================================================            |  88%
  |                                                                                                        
  |=======================================================================================           |  88%
  |                                                                                                        
  |=======================================================================================           |  89%
  |                                                                                                        
  |========================================================================================          |  89%
  |                                                                                                        
  |========================================================================================          |  90%
  |                                                                                                        
  |=========================================================================================         |  90%
  |                                                                                                        
  |=========================================================================================         |  91%
  |                                                                                                        
  |==========================================================================================        |  91%
  |                                                                                                        
  |==========================================================================================        |  92%
  |                                                                                                        
  |===========================================================================================       |  92%
  |                                                                                                        
  |===========================================================================================       |  93%
  |                                                                                                        
  |============================================================================================      |  93%
  |                                                                                                        
  |============================================================================================      |  94%
  |                                                                                                        
  |=============================================================================================     |  94%
  |                                                                                                        
  |=============================================================================================     |  95%
  |                                                                                                        
  |==============================================================================================    |  96%
  |                                                                                                        
  |===============================================================================================   |  97%
  |                                                                                                        
  |================================================================================================  |  98%
  |                                                                                                        
  |================================================================================================= |  99%
  |                                                                                                        
  |==================================================================================================| 100%
[1] ">>> CellChat inference is done. Parameter values are stored in `object@options$parameter` <<< [2025-05-24 01:05:33.343415]"
# Filter out the cell-cell communication if there are only few number of cells in certain cell groups
cellchat <- filterCommunication(cellchat, min.cells = 10)
# Infer the cell-cell communication at a signaling pathway level
cellchat <- computeCommunProbPathway(cellchat)

# Calculate the aggregated cell-cell communication network
cellchat <- aggregateNet(cellchat)
cellchat@net$count
        ILCs NK  KC  UK ILCs+NK  FB EC+SMC  B PH
ILCs      35 32  58  37      32  86     77 21  9
NK        33 34  39  32      31  86     72 20 18
KC        77 59 118 106      66 133    126 34 29
UK        38 28  93  74      28 115    110  9  9
ILCs+NK   33 33  38  22      25  69     70 15  8
FB        91 87 121 115      74 125    127 50 55
EC+SMC    79 67 111 102      67 118    111 34 41
B         19 22  13   4      18  36     31  6 10
PH        14 21  19   5      13  52     39  8 10
cellchat@net$weight
              ILCs          NK           KC           UK     ILCs+NK          FB      EC+SMC           B
ILCs    0.11489914 0.112108971 1.621116e-02 4.114771e-02 0.082158269 0.039815956 0.024496231 0.030227584
NK      0.13055332 0.524663135 3.010744e-02 5.572543e-02 0.088325746 0.074667665 0.075727731 0.021690204
KC      0.03281915 0.070988819 2.113551e-02 2.488180e-02 0.030911218 0.048229474 0.029378350 0.025377017
UK      0.04553401 0.047905687 1.133035e-02 7.391918e-03 0.033813470 0.028373022 0.026603173 0.001280091
ILCs+NK 0.10196743 0.107863387 1.487879e-02 3.970010e-02 0.077711654 0.026833180 0.018644891 0.037967858
FB      0.05387948 0.040273266 4.839934e-02 3.298680e-02 0.040672756 0.192959315 0.096695645 0.010361888
EC+SMC  0.01664501 0.001023907 9.649659e-03 7.552051e-03 0.004150033 0.060956685 0.051806315 0.003083762
B       0.03273964 0.040495127 5.535699e-05 1.409314e-05 0.027979346 0.009801424 0.000743569 0.013643298
PH      0.08025320 0.083182129 9.546808e-03 6.909823e-03 0.065638642 0.025616454 0.004357594 0.001405290
                PH
ILCs    0.09771904
NK      0.08812072
KC      0.05718065
UK      0.04048959
ILCs+NK 0.10986059
FB      0.03791575
EC+SMC  0.01114021
B       0.05268786
PH      0.05157753
# Visualize the aggregated cell-cell communication network
groupSize <- as.numeric(table(cellchat@idents))
par(mfrow = c(1, 2), xpd=TRUE)
netVisual_circle(cellchat@net$count, vertex.weight = groupSize, 
   weight.scale = T, label.edge= F, title.name = "Number of interactions")

netVisual_circle(cellchat@net$weight, vertex.weight = groupSize, 
   weight.scale = T, label.edge= F, title.name = "Interaction weights/strength")

dev.off()
null device 
          1 
# Examine the signaling sent from each cell group
mat <- cellchat@net$weight
par(mfrow = c(2, 6), xpd=TRUE)
for (i in 1:nrow(mat)) {
  mat2 <- matrix(0, nrow = nrow(mat), ncol = ncol(mat), dimnames = dimnames(mat))
  mat2[i, ] <- mat[i, ]
  netVisual_circle(mat2, vertex.weight = groupSize, weight.scale = F, 
                   edge.weight.max = max(mat), title.name = rownames(mat)[i])
}

dev.off()
null device 
          1 
mat <- cellchat@net$weight
par(mfrow = c(1, 2), xpd=TRUE)

for (i in 1:nrow(mat)) {  
  mat2 <- matrix(0, nrow = nrow(mat), ncol = ncol(mat), dimnames = dimnames(mat))  
  mat2[i, ] <- mat[i, ]  
  netVisual_circle(mat2, vertex.weight = groupSize, weight.scale = T, 
                   edge.weight.max = max(mat), title.name = rownames(mat)[i])}

Compute and visualize the network centrality scores for specific pathway

# Compute the network centrality scores
cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP") # the slot 'netP' means the inferred intercellular communication network of signaling pathways

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~01s          
  |++                                                | 3 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 7 % ~01s          
  |+++++                                             | 8 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++                                            | 11% ~01s          
  |+++++++                                           | 13% ~01s          
  |++++++++                                          | 15% ~01s          
  |+++++++++                                         | 16% ~01s          
  |++++++++++                                        | 18% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++                                       | 21% ~01s          
  |++++++++++++                                      | 23% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |++++++++++++++                                    | 26% ~01s          
  |++++++++++++++                                    | 28% ~01s          
  |+++++++++++++++                                   | 30% ~01s          
  |++++++++++++++++                                  | 31% ~01s          
  |+++++++++++++++++                                 | 33% ~01s          
  |++++++++++++++++++                                | 34% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++                              | 39% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++                   | 61% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
# Visualize the computed centrality scores using heatmap, allowing ready identification of major signaling roles of cell groups
pathways.show <- c("IL4") 
netAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 8, height = 2.5, font.size = 10)

Visualize chord plot to understand the interation among cell types for specific pathway

netVisual_chord_cell(cellchat, signaling = c("IL2"))
Plot the aggregated cell-cell communication network at the signaling pathway level

netVisual_chord_cell(cellchat, signaling = c("IL4"))
Plot the aggregated cell-cell communication network at the signaling pathway level

netVisual_chord_cell(cellchat, signaling = c("CCL"))
Plot the aggregated cell-cell communication network at the signaling pathway level

netVisual_chord_cell(cellchat, signaling = c("CXCL"))
Plot the aggregated cell-cell communication network at the signaling pathway level

netVisual_chord_cell(cellchat, signaling = c("MIF"))
Plot the aggregated cell-cell communication network at the signaling pathway level

netVisual_chord_cell(cellchat, signaling = c("BAG"))
Plot the aggregated cell-cell communication network at the signaling pathway level

We identify similar ligand-receptor communication among cell types as the paper (Fig. 3I). ILCs exhibit strong ligand-receptor interactions with other cell types, particularly in the IL-4 and CXCL signaling pathways. NK cells also engage in robust ligand-receptor interactions, especially through the CCL signaling pathways.

Re-cluster ILCs and NK to characterize the molecular heterogeneity of them

The rationale for re-clustering ILCs and NKs together is that they derive from a common lymphoid progenitor (CLP). By re-clustering them, we can identify ILC subtypes including NK, ILC1, ILC2, ILC3, and even some progenitors/rare cells.

Use harmony embeddings to cluster (using SCTransform to norm, findvarfeature, and scale again on subset)

# Check the idents
levels(Idents(harmonized_seurat))
[1] "ILCs"    "NK"      "KC"      "UK"      "ILCs+NK" "FB"      "EC+SMC"  "B"       "PH"     
# Subset the targeted cells
subset_cells <- subset(harmonized_seurat, idents = c("NK", "ILCs", "ILCs+NK"))

# Re-run SCTransform (NormalizeData, FindVariableFeatures, ScaleData workflow) to ensure that the gene variation is calculated on the subset
subset_cells <- SCTransform(subset_cells, vars.to.regress = "percent.mt", verbose = FALSE)
Warning: Different cells and/or features from existing assay SCT
# RunPCA
subset_cells <- RunPCA(subset_cells, assay = "SCT", npcs = 50)
PC_ 1 
Positive:  FTH1, LTB, RPL10, EEF1A1, IL32, KLRB1, RPL13, RPS18, RPL34, RGCC 
       AREG, RPL32, RPS6, IL13, VIM, RPL13A, RPL18A, RPL21, RPS2, RPL41 
       RPLP1, JUNB, LMNA, RPL11, RPL12, BIRC3, RPL19, IL7R, S100A4, RPS14 
Negative:  CCL4, GNLY, CCL3, CCL5, NKG7, CCL4L2, GZMA, IFNG, XCL2, XCL1 
       GZMK, CST7, GZMH, GZMB, CCL3L1, DUSP2, TYROBP, PRF1, KLRD1, FGFBP2 
       FCGR3A, ACTB, SPON2, FCER1G, KLRF1, CMC1, CD7, GZMM, LITAF, HOPX 
PC_ 2 
Positive:  XCL1, CCL3, XCL2, JUNB, ZFP36, FTH1, CCL4, GZMK, RPS27, RPL13A 
       IFNG, LMNA, LTB, RPL21, RPS18, RPL31, RPS6, RPL27A, DUSP2, RPL41 
       NFKBIA, FOS, GADD45B, CCL3L1, RPL7, CCL5, RPL3, RPL34, RGCC, DUSP1 
Negative:  AREG, IL13, IL22, NBAS, HSPA1A, GZMB, VIM, ACTG1, PTGS2, ACTB 
       PRDX1, IL26, KRT14, ALOX5AP, S100A11, S100A8, GNLY, S100A4, HSPA1B, KRT16 
       S100A6, BATF, TNFSF10, NEAT1, KRT6A, GPR171, MIIP, HPGD, JUND, S100A9 
PC_ 3 
Positive:  GNLY, NKG7, FGFBP2, RPL10, FCGR3A, SPON2, LTB, GZMH, PRF1, EEF1A1 
       RPL13, GZMA, RPL13A, RPS2, RPS6, HLA-B, ACTB, CLIC3, RPS3, RPS27A 
       RPL19, PFN1, PLAC8, RPS12, RPS3A, HLA-C, RPS18, RPL27A, CST7, KRT1 
Negative:  XCL1, XCL2, DUSP2, AREG, RGS1, CSF2, GZMK, IFNG, CD69, CCL3 
       NFKBIA, HSPA1A, DUSP1, ZFP36L2, SRGN, BTG1, DNAJB1, TSC22D3, IL13, DUSP4 
       HSPA1B, GADD45B, IL22, MCL1, CXCR4, TNFRSF18, FOS, CCL3L1, NR4A1, RPS26 
PC_ 4 
Positive:  CCL4, CCL3, CCL4L2, IL13, CCL3L1, IFNG, EEF1A1, CSF2, IL22, LTB 
       RPL10, NBAS, PTGS2, RPL13, RPLP1, KLRB1, ZFP36, GADD45B, VIM, RPL28 
       JUN, AREG, RPS12, NFKBIA, HSPA1A, TPT1, RPL19, RPL11, RPS2, KRT14 
Negative:  GNLY, TSC22D3, SPINK2, TMSB4X, RGS1, ZFP36L2, GEM, CRIP1, ZNF683, B2M 
       TRAT1, TMPRSS11E, PABPC1, IGKC, PTMA, CTSW, EZR, BTG1, XIST, ITM2C 
       GZMH, PTP4A1, DNAJB1, MCL1, RCBTB2, CD96, ARF6, MIF, KRT86, PRF1 
PC_ 5 
Positive:  HSPA1A, HSPA1B, HSPA6, DNAJB1, GADD45B, CD3D, SPINK2, KRT14, FOS, DUSP1 
       LGALS1, XCL1, TRAC, ACTB, MTRNR2L8, TXNIP, ACTG1, JUN, KRT5, NFKBIA 
       KLRC1, CCL3, SPTSSB, CD3E, TNF, TMPRSS11E, CD3G, CORO1B, LGALS3, KRT10 
Negative:  FTH1, AREG, GNLY, CCL5, IL13, GZMB, CREM, IL22, NKG7, PTGS2 
       RPS26, SRGN, SELENOK, KLRB1, CLEC2B, SDCBP, GZMH, REL, NAMPT, LITAF 
       RORA, GZMK, NFKBIZ, ZNF331, DUSP4, GNG2, RGCC, NBAS, FGFBP2, PNRC1 
# Elbow Plot to visualize the optimal number of PCs
ElbowPlot(subset_cells)


# Find Neighbors
subset_cells <- FindNeighbors(subset_cells, dims = 1:20)  # Using the first 20 PCs
Computing nearest neighbor graph
Computing SNN
# Find Clusters (Resolution can be adjusted)
subset_cells <- FindClusters(subset_cells, resolution = 0.5)  # Adjust resolution based on your clustering needs
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 8377
Number of edges: 297398

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9033
Number of communities: 13
Elapsed time: 0 seconds
# Run UMAP for dimensionality reduction
subset_cells <- RunUMAP(subset_cells, dims = 1:20)  # You can adjust the number of dimensions if necessary
13:37:08 UMAP embedding parameters a = 0.9922 b = 1.112
13:37:08 Read 8377 rows and found 20 numeric columns
13:37:08 Using Annoy for neighbor search, n_neighbors = 30
13:37:08 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
13:37:08 Writing NN index file to temp file /var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T//Rtmprd5Zjq/file50a37c52359d
13:37:08 Searching Annoy index using 1 thread, search_k = 3000
13:37:10 Annoy recall = 100%
13:37:11 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
13:37:13 Initializing from normalized Laplacian + noise (using RSpectra)
13:37:13 Commencing optimization for 500 epochs, with 346100 positive edges
13:37:13 Using rng type: pcg
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
13:37:21 Optimization finished
# Visualize UMAP
p1 <- DimPlot(subset_cells, reduction = "umap", label = TRUE, group.by = "Sample")
p2 <- DimPlot(subset_cells, reduction = "umap", label = TRUE, group.by = "Condition")

p1 + p2


# # Run Harmony on the subset
# subset_cells <- RunHarmony(subset_cells,
#                             group.by.vars = c("Sample", "Condition"),
#                             reduction = "pca",
#                             assay.use = "SCT",
#                             reduction.save = "harmony")
# reduction_name <- "harmony"
# Since batch effect is observed in the subset, we run Harmony on the subset.

library(harmony)

subset_cells <- RunHarmony(subset_cells,
                            group.by.vars = c("Sample", "Condition"),
                            reduction = "pca",
                            assay.use = "SCT",
                            reduction.save = "harmony")
Transposing data matrix
Initializing state using k-means centroids initialization
Harmony 1/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 2/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 3/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 4/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 5/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 6/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony 7/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Harmony converged after 7 iterations
reduction_name <- "harmony"

# Visualize UMAP
p3 <- DimPlot(subset_cells, reduction = "harmony", label = TRUE, group.by = "Sample")
p4 <- DimPlot(subset_cells, reduction = "harmony", label = TRUE, group.by = "Condition")

p3 + p4

# Do the dimensional reduction on harmony embedding
subset_cells <- subset_cells %>%
  RunUMAP(reduction = reduction_name, dims = 1:20) %>%
  FindNeighbors(reduction = reduction_name, dims = 1:20) %>%
  FindClusters(resolution = 0.1, algorithm = 4)  # Try on Leiden clustering (4) instead of Louvain (1), but results are similar
00:15:18 UMAP embedding parameters a = 0.9922 b = 1.112
00:15:18 Read 8377 rows and found 20 numeric columns
00:15:18 Using Annoy for neighbor search, n_neighbors = 30
00:15:18 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
00:15:19 Writing NN index file to temp file /var/folders/xh/0jp7wn_x1_g49f9z21wrqcs40000gn/T//Rtmprd5Zjq/file50a33ba01449
00:15:19 Searching Annoy index using 1 thread, search_k = 3000
00:15:21 Annoy recall = 100%
00:15:23 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
00:15:25 Initializing from normalized Laplacian + noise (using RSpectra)
00:15:25 Commencing optimization for 500 epochs, with 357262 positive edges
00:15:25 Using rng type: pcg
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
00:15:33 Optimization finished
Computing nearest neighbor graph
Computing SNN
Warning: `random.seed` must be greater than 0 for leiden clustering, resetting `random.seed` to 1.13 singletons identified. 8 final clusters.
Warning: Adding a command log without an assay associated with it
p5 <- DimPlot(subset_cells, reduction = "umap", group.by = "seurat_clusters", label = TRUE) +
  ggtitle("UMAP of Re-clustered Subset, resolution 0.1") 
ElbowPlot(subset_cells)

# Using ggh4x and dot plot to visulize canonical markers

# install.packages("ggh4x")
# library(ggh4x)

gene_celltype_df <- data.frame(
  gene = c(
    # NK
    "KLRD1", "NKG7",
    # ILC
    "IL7R", "KLRB1",
    # ILC1
    "TBX21",
    # ILC2
    "GATA3", "RORA",
    # ILC3
    "AHR", "RORC"
  ),
  
  cell_type = c(
    rep("NK", 2),
    rep("ILC", 2),
    rep("ILC1", 1),
    rep("ILC2", 2),
    rep("ILC3", 2)
  ),
  stringsAsFactors = FALSE
)


marker_genes <- gene_celltype_df$gene

p <- DotPlot(subset_cells, features = marker_genes) + 
  scale_color_gradient2(low = "blue", mid = "lightgrey", high = "red") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Scale for colour is already present.
Adding another scale for colour, which will replace the existing scale.
p$data <- p$data %>%
  left_join(gene_celltype_df, by = c("features.plot" = "gene"))

p <- p +
scale_x_discrete(position = "top") +  # move x axis to the top, making it like the title of each features
facet_nested(~cell_type + features.plot, scales = "free_x", space = "free_x") +
guides(x = guide_axis_nested(check.overlap = TRUE)) +
theme(
  axis.text.x = element_text(angle = 45, hjust = 0),
  strip.text.x = element_text(size = 12, face = "bold"),
  panel.spacing.x = unit(0.2, "lines")
)

ggsave(filename = "NK_ILC_annotation2.png", plot = p, width = 15, height = 8, dpi = 300)

p

Since the canonical marker visualization did not clearly distinguish ILC subtypes, we followed the paper’s approach and used SingleR for annotation.

Annotate the re-clustered NK/ILCs by SingleR

# BiocManager::install("SingleR")
# install.packages("dplyr")
# install.packages("tidyr")

# Load the libraries
library(SingleR)
library(SummarizedExperiment)
library(Matrix)
library(tidyverse)
library(data.table)
# Part 1. Process the raw reference files (provided by the paper)
data_dir <- "/Users/yunchichen/113-2_scRNA/final_project/GSE70580_RAW/"

# List all files
files <- list.files(data_dir, full.names = TRUE, pattern = "*.txt.gz")

# Function to get labels from file name
get_label_from_filename <- function(filename) {
  parts <- strsplit(gsub(".txt.gz", "", basename(filename)), "_")[[1]]
  label <- parts[length(parts) - 1]
  return(label)
}

# Initialize
expr_list <- list()
labels <- c()
sample_names <- c()

for (f in files) {
  label <- get_label_from_filename(f)
  if (!is.na(label)) {
    # Read file, assuming it's tab-delimited with header
    df <- fread(f, header = TRUE)
    
    # Extract relevant columns
    gene_names <- df[[1]]          # "#Gene symbol"
    expr_values <- df[["RPKM"]]    # Use RPKM column as expression
    
    # Name the vector using gene symbols
    names(expr_values) <- gene_names

    # Store
    expr_list[[f]] <- expr_values
    labels <- c(labels, label)
    sample_names <- c(sample_names, basename(f))  # for colnames later
  }
}

# Part 2. Build the Expression Matrix
# Use common genes across all samples
common_genes <- Reduce(intersect, lapply(expr_list, names))

# Build expression matrix
expr_mat <- do.call(cbind, lapply(expr_list, function(x) x[common_genes]))
rownames(expr_mat) <- common_genes
colnames(expr_mat) <- sample_names

# Part 3. Create SingleR reference object
library(SummarizedExperiment)

log_expr_mat <- log2(expr_mat + 1) #SingleR expects log-normalized expression

ref_se <- SummarizedExperiment(
  assays = list(logcounts = log_expr_mat)
)

colData(ref_se)$label <- labels
# SingleR expects log-normalized counts, not corrected residuals from SCTransform
DefaultAssay(subset_cells) <- "RNA"
subset_cells <- NormalizeData(subset_cells)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
# Extract expression matrix for annotation
test_expr <- GetAssayData(subset_cells, assay = "RNA", slot = "data") # gene (rows) × cells (columns) matrix

# Run SingleR
singleR_results <- SingleR(
  test = as.matrix(test_expr),  # cell-level matrix
  ref = ref_se,                 # bulk reference
  labels = ref_se$label         # vector of labels (e.g., ILC1, ILC2, ILC3, NK)
)
Warning: sparse->dense coercion: allocating vector of size 2.1 GiB
# Add SingleR labels back to Seurat metadata
subset_cells$SingleR_label <- singleR_results$labels

# Visualize results
DimPlot(subset_cells, group.by = "SingleR_label", label = TRUE) +
  ggtitle("SingleR Annotation")

subset_cells$SingleR_pruned <- singleR_results$pruned.labels
DimPlot(subset_cells, group.by = "SingleR_pruned", label = TRUE)

From the results, NK cells and ILC2s can be easily distinguished, which is consistent with the findings reported in the paper. We also observed that ILC1s are scattered across different clusters, which similarly aligns with the paper’s observations. Another similarity is that only a small proportion of ILC3s were identified. In summary, ILC2s and NK cells appear to be the predominant innate lymphoid cell populations in human skin.

Identify DEGs across conditions in ILCs and NK, and conduct their functional enrichment analysis

# Check default assay and idents
DefaultAssay(harmonized_seurat)
DefaultAssay(harmonized_seurat) <- "SCT"
table(Idents(harmonized_seurat))
# Perform differential expression for ILCs
ad <- PrepSCTFindMarkers(harmonized_seurat)
ad$celltype.stim <- paste(ad$celltype.paper, ad$Condition, sep = "_")
Idents(ad) <- "celltype.stim"
ilc.ad.response <- FindMarkers(ad, ident.1 = "ILCs_AD", ident.2 = "ILCs_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes <- ilc.ad.response[ilc.ad.response$p_val_adj < 0.05 & ilc.ad.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes <- significant_genes[order(significant_genes$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes, 20)  # Top 20 upregulated genes
# Perform differential expression for NK
nk.ad.response <- FindMarkers(ad, ident.1 = "NK_AD", ident.2 = "NK_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes2 <- nk.ad.response[nk.ad.response$p_val_adj < 0.05 & nk.ad.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes2 <- significant_genes2[order(significant_genes2$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes2, 20)  # Top 20 upregulated genes

The top 20 unregulated genes were input to Enrichr to do functional enrichment analysis using Reactome and KEGG database. In atopic dermatitis (AD), ILCs exhibited upregulated immune-related pathways, with DEGs such as IL22 and IL26 (associated with ILC3), and AREG (associated with ILC2). In addition, NK cells in AD showed upregulation of TNF signaling and antimicrobial response pathways.

Identify DEGs across conditions in ILC1, ILC2, ILC3 and NK, and conduct their functional enrichment analysis

# Check default assay and idents
DefaultAssay(subset_cells)
[1] "SCT"
DefaultAssay(subset_cells) <- "SCT"
table(Idents(subset_cells))

   1    2    3    4    5    6    7    8 
2852 1842 1495 1464  705   15    2    2 
Idents(subset_cells) <- subset_cells$SingleR_pruned
table(Idents(subset_cells))

  NK ILC1 ILC2 ILC3 
3058 1987 3202   23 
# Perform differential expression
ad.ilc <- PrepSCTFindMarkers(subset_cells)
Only one SCT model is stored - skipping recalculating corrected counts
ad.ilc$celltype.stim <- paste(ad.ilc$SingleR_pruned, ad.ilc$Condition, sep = "_")
Idents(ad.ilc) <- "celltype.stim"

# ILC1-----------------------------------
ad.ilc1.response <- FindMarkers(ad.ilc, ident.1 = "ILC1_AD", ident.2 = "ILC1_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes1 <- ad.ilc1.response[ad.ilc1.response$p_val_adj < 0.05 & ad.ilc1.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes1 <- significant_genes1[order(significant_genes1$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes1, 20)  # Top 20 upregulated genes


# ILC2-----------------------------------
ad.ilc2.response <- FindMarkers(ad.ilc, ident.1 = "ILC2_AD", ident.2 = "ILC2_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes2 <- ad.ilc2.response[ad.ilc2.response$p_val_adj < 0.05 & ad.ilc2.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes2 <- significant_genes2[order(significant_genes2$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes2, 20)  # Top 20 upregulated genes


# ILC3-----------------------------------
ad.ilc3.response <- FindMarkers(ad.ilc, ident.1 = "ILC3_AD", ident.2 = "ILC3_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes3 <- ad.ilc3.response[ad.ilc3.response$p_val_adj < 0.05 & ad.ilc3.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes3 <- significant_genes3[order(significant_genes3$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes3, 20)  # Top 20 upregulated genes


# NK-----------------------------------
ad.nk.response <- FindMarkers(ad.ilc, ident.1 = "NK_AD", ident.2 = "NK_NHS", verbose = FALSE)

# Filter genes with p_val_adj < 0.05 & pct.1 > 0.2
significant_genes4 <- ad.nk.response[ad.nk.response$p_val_adj < 0.05 & ad.nk.response$pct.1 > 0.2,]

# Rank by avg_log2FC (absolute value for both upregulated and downregulated genes)
ranked_genes4 <- significant_genes4[order(significant_genes4$avg_log2FC, decreasing = TRUE), ]

# View the top upregulated genes
head(ranked_genes4, 20)  # Top 20 upregulated genes

The top 20 unregulated genes were input to Enrichr to do functional enrichment analysis using Reactome and KEGG database. Due to the limited number of ILC3 cells, no significant DEGs could be identified based on the adjusted p-value (p_val_adj). For NK cells, ILC1, and ILC2, the Reactome analysis revealed enrichment in the ‘Metal Sequestration by Antimicrobial Proteins’ pathway, while the KEGG analysis identified enrichment in the ‘IL-17 signaling pathway’.

LS0tCnRpdGxlOiAiU2luZ2xlLWNlbGwgYW5hbHlzaXMgcmV2ZWFscyBpbm5hdGUgbHltcGhvaWQgY2VsbCBsaW5lYWdlIGluZmlkZWxpdHkgaW4gYXRvcGljIGRlcm1hdGl0aXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KQXV0aG9yOiBZdW4tQ2hpIChZdWtpKSBDaGVuCkFmZmlsaWF0aW9uOiBHcmFkdWF0ZSBJbnN0aXR1dGUgb2YKQmlvbWVkaWNhbCBFbGVjdHJvbmljcyBhbmQgQmlvaW5mb3JtYXRpY3MsIE5hdGlvbmFsIFRhaXdhbiBVbml2ZXJzaXR5CgpUaGlzIG5vdGVib29rIGlzIGZvciB0aGUgZmluYWwgcHJvamVjdCBvZiAxMTMtMiBzY1JOQS1zZXEgYW5hbHlzaXMgY2xhc3MuIFRoaXMgcHJvamVjdCBhaW1zIHRvIGFuYWx5emUgdGhlIGRhdGEgZnJvbSB0aGlzIFtwYXBlcl0oMTAuMTAxNi9qLmphY2kuMjAyMS4wNy4wMjUpIHVzaW5nIFNldXJhdCBhbmQgb3RoZXIgcGFja2FnZXMuCgoKIyBSZWFkIGRhdGEgYW5kIGNyZWF0IFNldXJhdCBvYmplY3QKYGBge3J9CmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZHBseXIpCgpzZXQuc2VlZCgxMjQpCgojIENyZWF0ZSBhbiBlbXB0eSBsaXN0IHRvIHN0b3JlIFNldXJhdCBvYmplY3RzIGZvciBlYWNoIHNhbXBsZQpzZXVyYXRfbGlzdCA8LSBsaXN0KCkKCiMgTGlzdCBvZiBzYW1wbGUgaWRlbnRpZmllcnMgCnNhbXBsZXMgPC0gYygiR1NNNTQ3NDMzM19OSFMxIiwgIkdTTTU0NzQzMzRfTkhTMiIsICJHU001NDc0MzM1X05IUzMiLCAiR1NNNTQ3NDMzNl9BRDIiLCAiR1NNNTQ3NDMzN19BRDMiLCAiR1NNNTQ3NDMzOF9BRDQiLCAiR1NNNTQ3NDMzOV9BRDUiKQoKIyBEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmF3IGZpbGVzCnJhd19kYXRhX2RpciA8LSAiL1VzZXJzL3l1bmNoaWNoZW4vMTEzLTJfc2NSTkEvZmluYWxfcHJvamVjdC9HU0UxODA4ODVfUkFXLyIKYGBgCgpgYGB7cn0KIyBMb29wIHRocm91Z2ggZWFjaCBzYW1wbGUgYW5kIGNyZWF0ZSBhIFNldXJhdCBvYmplY3QKZm9yIChzYW1wbGUgaW4gc2FtcGxlcykgewogICMgQ29uc3RydWN0IHRoZSBkaXJlY3RvcnkgcGF0aCB3aGVyZSB0aGUgMTBYIGRhdGEgaXMgc3RvcmVkCiAgZGF0YV9kaXIgPC0gcGFzdGUwKHJhd19kYXRhX2Rpciwgc2FtcGxlKQogIAogICMgUmVhZCAxMFggZGF0YSB1c2luZyB0aGUgZGlyZWN0b3J5IHBhdGgKICBkYXRhIDwtIFJlYWQxMFgoZGF0YS5kaXIgPSBkYXRhX2RpcikgIyBUaGUgUmVhZDEwWCBjYW4gb25seSByZWFkIHRoZSBiYXJjb2Rlcy50c3YsIGZlYXR1cmVzLnRzdiwgYW5kIG1hdHJpeC5tdHggKC5neiBmaWxlcyBhcmUgb2spIHdpdGhvdXQgYW55IHByZWZpeAogIAogICMgQ3JlYXRlIFNldXJhdCBvYmplY3QKICBzZXVyYXRfb2JqIDwtIENyZWF0ZVNldXJhdE9iamVjdChjb3VudHMgPSBkYXRhKQogIHNldXJhdF9saXN0W1tzYW1wbGVdXSA8LSBzZXVyYXRfb2JqCn0KYGBgCgoKIyBRdWFsaXR5IGNvbnRyb2wKCiMjIEFycmFuZ2UgdGhlIG1ldGEuZGF0YSBjb2x1bW5zIGZvciBlYXNpZXIgUUMKYGBge3J9CiMgTWVyZ2UgZWFjaCBzYW1wbGVzIGZvciBlYXNpZXIgUUMKc2V1cmF0X21lcmdlZCA8LSBtZXJnZShzZXVyYXRfbGlzdFtbMV1dLCB5ID0gc2V1cmF0X2xpc3RbYygiR1NNNTQ3NDMzNF9OSFMyIiwgIkdTTTU0NzQzMzVfTkhTMyIsICJHU001NDc0MzM2X0FEMiIsICJHU001NDc0MzM3X0FEMyIsICJHU001NDc0MzM4X0FENCIsICJHU001NDc0MzM5X0FENSIpXSwgYWRkLmNlbGwuaWRzID0gbmFtZXMoc2V1cmF0X2xpc3QpKQoKIyBDcmVhdGUgU2FtcGxlIGNvbHVtbiB0aGF0IGlzIGlkZW50aWNhbCBhcyByb3cgbmFtZSAoc2FtcGxlX2NvbmRpdGlvbiBhbmQgbnVtX2JhcmNvZGUpCnNldXJhdF9tZXJnZWQkU2FtcGxlIDwtIHJvd25hbWVzKHNldXJhdF9tZXJnZWRAbWV0YS5kYXRhKQoKIyBTZXBhcmF0ZSB0aGUgJ1NhbXBsZScgY29sdW1uIGludG8gJ1NhbXBsZV9JRCcsICdTYW1wbGUnLCBhbmQgJ0JhcmNvZGUnCnNldXJhdF9tZXJnZWRAbWV0YS5kYXRhIDwtIHNlcGFyYXRlKHNldXJhdF9tZXJnZWRAbWV0YS5kYXRhLCBjb2wgPSAnU2FtcGxlJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gPSBjKCdTYW1wbGVfSUQnLCAnU2FtcGxlJywgJ0JhcmNvZGUnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICdfJykKCiMgS2VlcCBvbmx5IHRoZSBhbHBoYWJldGljIHBhcnQgb2YgdGhlICdTYW1wbGUnIGNvbHVtbiBhbmQgYXNzaWduIHRvICdDb25kaXRpb24nIGNvbHVtbiAoZS5nLiwgcmVtb3ZlIHRoZSAxIG9mIE5IUzEpCnNldXJhdF9tZXJnZWRAbWV0YS5kYXRhJENvbmRpdGlvbiA8LSBnc3ViKCJcXGQiLCAiIiwgc2V1cmF0X21lcmdlZEBtZXRhLmRhdGEkU2FtcGxlKQoKIyBSZW9yZGVyIHRoZSAnU2FtcGxlJyBmYWN0b3IgbGV2ZWxzIHRvIGRpc3BsYXkgTkhTIHNhbXBsZXMgZmlyc3QsIGZvbGxvd2VkIGJ5IEFEIHNhbXBsZXMKc2V1cmF0X21lcmdlZCRTYW1wbGUgPC0gZmFjdG9yKHNldXJhdF9tZXJnZWQkU2FtcGxlLCBsZXZlbHMgPSBjKCJOSFMxIiwgIk5IUzIiLCAiTkhTMyIsICJBRDIiLCAiQUQzIiwgIkFENCIsICJBRDUiKSkKYGBgCgojIyBDYWxjdWxhdGUgYW5kIHZpc3VhbGl6ZSBRQyBtZXRyaWNzCmBgYHtyfQojIENhbGN1bGF0ZSBtaXRvY2hvbmRyaWFsIHBlcmNlbnRhZ2UKc2V1cmF0X21lcmdlZCRwZXJjZW50Lm10IDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KHNldXJhdF9tZXJnZWQsIHBhdHRlcm4gPSAiXk1ULSIpCgojIFZpc3VhbGl6ZSBRQyBtZXRyaWNzIGFzIGEgdmlvbGluIHBsb3QKVmxuUGxvdChzZXVyYXRfbWVyZ2VkLCBmZWF0dXJlcyA9IGMoIm5GZWF0dXJlX1JOQSIsICJuQ291bnRfUk5BIiwgInBlcmNlbnQubXQiKSwgbmNvbCA9IDMsIGdyb3VwLmJ5ID0gJ1NhbXBsZScsIHB0LnNpemUgPSAwKQpgYGAKYGBge3J9CiMgQ3JlYXRlIHNjYXR0ZXIgcGxvdHMgZm9yIFFDIHJlc3VsdHMKcGxvdDEgPC0gRmVhdHVyZVNjYXR0ZXIoc2V1cmF0X21lcmdlZCwgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIGZlYXR1cmUyID0gInBlcmNlbnQubXQiKQpwbG90MiA8LSBGZWF0dXJlU2NhdHRlcihzZXVyYXRfbWVyZ2VkLCBmZWF0dXJlMSA9ICJuQ291bnRfUk5BIiwgZmVhdHVyZTIgPSAibkZlYXR1cmVfUk5BIikgKyBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nKQpwbG90MQpwbG90MgpgYGAKCiMjIEZpbHRlciBvdXQgdGhlIGxvdy1xdWFsaXR5IGNlbGxzClRoZXJlIGFyZSAyNjI3OCBjZWxscyBpbiBzZXVyYXRfbWVyZ2VkLiBBZnRlciBmaWx0ZXJpbmcsIHRoZXJlIGFyZSAxODIwOCBjZWxscyBpbiBzZXVyYXRfZmlsdGVyZWQuIFRoZXNlIHRocmVzaG9sZHMgKG5GZWF0dXJlX1JOQSA8IDUwMDAgJiBwZXJjZW50Lm10IDwgMTApIGFyZSBmcm9tIHRoZSBvcmlnaW5hbCBwYXBlciwgd2hpY2ggYXJlIGFsc28gcmVhc29uYWJsZSBmcm9tIG91ciBRQyB2aXN1YWxpemF0aW9uLgpgYGB7cn0Kc2V1cmF0X2ZpbHRlcmVkIDwtIHN1YnNldChzZXVyYXRfbWVyZ2VkLCBzdWJzZXQgPSBuRmVhdHVyZV9STkEgPCA1MDAwICYgcGVyY2VudC5tdCA8IDEwKSAKYGBgCgojIyBQcmUtcHJvY2VzcyBzdGFuZGFyZCB3b3JrZmxvdyBmb3IgZWFjaCBzYW1wbGUsIGluIG9yZGVyIHRvIGlucHV0IHRvIERvdWJsZXRGaW5kZXIKYGBge3J9CnNldXJhdF9saXN0X2ZpbHRlcmVkIDwtIFNwbGl0T2JqZWN0KHNldXJhdF9maWx0ZXJlZCwgc3BsaXQuYnkgPSAnU2FtcGxlJykKCmZvciAoaSBpbiAxOmxlbmd0aChzZXVyYXRfbGlzdF9maWx0ZXJlZCkpIHsKICAKICAjIE5vcm1hbGl6ZSwgZmluZCB2YXJpYWJsZSBmZWF0dXJlcywgc2NhbGUsIHJ1biBQQ0EKICBzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dIDwtIHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0gJT4lCiAgICBOb3JtYWxpemVEYXRhKCkgJT4lICAKICAgIEZpbmRWYXJpYWJsZUZlYXR1cmVzKCkgJT4lICAKICAgIFNjYWxlRGF0YSgpICU+JSAgCiAgICBSdW5QQ0EobnBjcyA9IDIwKSAgCiAgCiAgIyBWaXN1YWxpemUgdGhlIGVsYm93IHBsb3QgZm9yIGVhY2ggU2V1cmF0IG9iamVjdCB0byBpZGVudGlmeSB0aGUgbnVtYmVyIG9mIFBDcyB0byB1c2UKICBwMSA8LSBFbGJvd1Bsb3Qoc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSkgKyBnZ3RpdGxlKHBhc3RlKCJFbGJvdyBQbG90IGZvciIsIG5hbWVzKHNldXJhdF9saXN0X2ZpbHRlcmVkKVtpXSkpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkgIyBjZW50ZXIgdGhlIHRpdGxlCiAgcHJpbnQocDEpCiAgCiAgIyBGaW5kIG5laWdoYm9ycyB1c2luZyB0aGUgZmlyc3QgMjAgUENzCiAgc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSA8LSBGaW5kTmVpZ2hib3JzKHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0sIGRpbXMgPSAxOjIwKQogIAogICMgUGVyZm9ybSBjbHVzdGVyaW5nIChmaW5kIGNsdXN0ZXJzIGJhc2VkIG9uIHRoZSBuZWlnaGJvcnMpCiAgc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSA8LSBGaW5kQ2x1c3RlcnMoc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSwgcmVzb2x1dGlvbiA9IDAuNSkgIAogIAogICMgUnVuIFVNQVAgdXNpbmcgdGhlIGZpcnN0IDIwIHByaW5jaXBhbCBjb21wb25lbnRzIGZyb20gUENBCiAgc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSA8LSBSdW5VTUFQKHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0sIGRpbXMgPSAxOjIwKSAgCiAgCiAgIyBWaXN1YWxpemUgVU1BUAogIHAyIDwtIERpbVBsb3Qoc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSwgcmVkdWN0aW9uID0gInVtYXAiKSArIGdndGl0bGUocGFzdGUoIlVNQVAgZm9yIiwgbmFtZXMoc2V1cmF0X2xpc3RfZmlsdGVyZWQpW2ldKSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSAjIGNlbnRlciB0aGUgdGl0bGUKICBwcmludChwMikKICAKICAjIERlZmluZSB0aGUgUkRTIGZpbGVuYW1lIHdpdGggdGhlIGRpcmVjdG9yeSBwYXRoCiAgcmRzX2ZpbGVuYW1lIDwtIHBhc3RlMCgiL1VzZXJzL3l1bmNoaWNoZW4vMTEzLTJfc2NSTkEvZmluYWxfcHJvamVjdC9wcm9jZXNzZWRfZGF0YS8iLCAiZmlsdGVyZWRfIiwgbmFtZXMoc2V1cmF0X2xpc3RfZmlsdGVyZWQpW2ldLCAiLnJkcyIpCiAgCiAgIyBTYXZlIHRoZSBTZXVyYXQgb2JqZWN0IHRvIHRoZSBSRFMgZmlsZQogIHNhdmVSRFMoc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSwgZmlsZSA9IHJkc19maWxlbmFtZSkKfQoKYGBgCgojIFJlbW92ZSBkb3VibGV0cyBieSBEb3VibGV0RmluZGVyCgpgYGB7cn0KIyBJbnN0YWxsIERvdWJsZXQgRmluZGVyCnJlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCdjaHJpcy1tY2dpbm5pcy11Y3NmL0RvdWJsZXRGaW5kZXInLCBmb3JjZSA9IFRSVUUpCmBgYAoKYGBge3J9CiMgTGlicmFyeSB0aGUgcGFja2FnZXMgbmVlZGVkIGZvciBkb3VibGV0IGZpbmRlcgpsaWJyYXJ5KE1hdHJpeCkKbGlicmFyeShmaWVsZHMpCmxpYnJhcnkoS2VyblNtb290aCkKbGlicmFyeShST0NSKQpsaWJyYXJ5KHBhcmFsbGVsKQpsaWJyYXJ5KERvdWJsZXRGaW5kZXIpCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZHBseXIpCmBgYAoKYGBge3J9CiMgUmVhZCB0aGUgZmlsdGVyZWQgUkRTIGZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMaXN0IGFsbCBSRFMgZmlsZXMgdGhhdCBzdGFydCB3aXRoICdmaWx0ZXJlZF8nIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CnJkc19maWxlcyA8LSBsaXN0LmZpbGVzKCIvVXNlcnMveXVuY2hpY2hlbi8xMTMtMl9zY1JOQS9maW5hbF9wcm9qZWN0L3Byb2Nlc3NlZF9kYXRhLyIsIAogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gIl5maWx0ZXJlZF8uKlxcLnJkcyQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgZnVsbC5uYW1lcyA9IFRSVUUpCgojIEluaXRpYWxpemUgYW4gZW1wdHkgbGlzdCB0byBzdG9yZSB0aGUgU2V1cmF0IG9iamVjdHMKc2V1cmF0X2xpc3RfZmlsdGVyZWQgPC0gbGlzdCgpCgojIExvb3Agb3ZlciBlYWNoIFJEUyBmaWxlIGFuZCByZWFkIGl0IGludG8gdGhlIGxpc3QKZm9yIChmaWxlIGluIHJkc19maWxlcykgewogICMgUmVhZCB0aGUgU2V1cmF0IG9iamVjdCBmcm9tIHRoZSBSRFMgZmlsZQogIHNldXJhdF9vYmogPC0gcmVhZFJEUyhmaWxlKQogIAogICMgRXh0cmFjdCB0aGUgc2FtcGxlIG5hbWUgZnJvbSB0aGUgZmlsZW5hbWUgKGZvciBuYW1pbmcpCiAgc2FtcGxlX25hbWUgPC0gZ3N1YigiXmZpbHRlcmVkXyIsICIiLCBnc3ViKCIucmRzIiwgIiIsIGJhc2VuYW1lKGZpbGUpKSkgICMgUmVtb3ZlICJmaWx0ZXJlZF8iIGFuZCAiLnJkcyIKICAKICAjIEFkZCB0aGUgU2V1cmF0IG9iamVjdCB0byB0aGUgbGlzdCB3aXRoIHNhbXBsZV9uYW1lIGFzIGtleQogIHNldXJhdF9saXN0X2ZpbHRlcmVkW1tzYW1wbGVfbmFtZV1dIDwtIHNldXJhdF9vYmoKfQoKIyBwcmludCBzYW1wbGUgbmFtZXMgdG8gY2hlY2sgaWYgYWxsIHRoZSBvYmplY3RzIGFyZSBsb2FkZWQgcHJvcGVybHkgYnkgaW5zcGVjdGluZyB0aGUgbGlzdApwcmludChuYW1lcyhzZXVyYXRfbGlzdF9maWx0ZXJlZCkpICAKCgojIExvb3AgZWFjaCBzYW1wbGUgdG8gcnVuIERvdWJsZXQgRmluZGVyIHdvcmtmbG93LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZm9yIChpIGluIDE6bGVuZ3RoKHNldXJhdF9saXN0X2ZpbHRlcmVkKSl7CiAgCiAgIyBwSyBJZGVudGlmaWNhdGlvbiAobm8gZ3JvdW5kLXRydXRoKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgc2V1cmF0Lmxpc3QuZGYgPC0gcGFyYW1Td2VlcChzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dLCBQQ3MgPSAxOjIwLCBzY3QgPSBGQUxTRSkKICBzZXVyYXQuZGYgPC0gc3VtbWFyaXplU3dlZXAoc2V1cmF0Lmxpc3QuZGYsIEdUID0gRkFMU0UpCiAgc2V1cmF0LnBrdGFibGUgPC0gZmluZC5wSyhzZXVyYXQuZGYpCiAgCiAgIyBWaXN1YWxpemUgcEsgaWRlbnRpZmljYXRpb24gd2l0aCBnZ3Bsb3QKICBwMyA8LSBnZ3Bsb3Qoc2V1cmF0LnBrdGFibGUsIGFlcyhwSywgQkNtZXRyaWMsIGdyb3VwID0gMSkpICsKICAgIGdlb21fcG9pbnQoKSArCiAgICBnZW9tX2xpbmUoKSArIAogICAgZ2d0aXRsZShwYXN0ZSgicEsgSWRlbnRpZmljYXRpb24gZm9yIiwgbmFtZXMoc2V1cmF0X2xpc3RfZmlsdGVyZWQpW2ldKSkgKyAgCiAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwgIAogICAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksICAKICAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSkgKyAgCiAgICBsYWJzKHggPSAicEsgVmFsdWUiLCB5ID0gIkJDbWV0cmljIikgIAogIHByaW50KHAzKQogIAogICMgRXh0cmFjdCB0aGUgYmVzdCBwSyB2YWx1ZQogIHBLIDwtIHNldXJhdC5wa3RhYmxlICU+JQogICAgZmlsdGVyKEJDbWV0cmljID09IG1heChCQ21ldHJpYykpICU+JQogICAgc2VsZWN0KHBLKQogIHBLIDwtIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHBLW1sxXV0pKQogIAogICMgSG9tb3R5cGljIERvdWJsZXQgUHJvcG9ydGlvbiBFc3RpbWF0ZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIyBHZXQgdGhlIG51bWJlciBvZiBjZWxscyBmb3IgdGhlIGN1cnJlbnQgZGF0YXNldAogIG51bV9jZWxscyA8LSBucm93KHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV1AbWV0YS5kYXRhKQogICMgVGFpbG9yIHRoZSBkb3VibGV0IGZvcm1hdGlvbiByYXRlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgY2VsbHMKICBkb3VibGV0X3JhdGUgPC0gaWZlbHNlKG51bV9jZWxscyA8PSAxMDAwLCAwLjAwOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKG51bV9jZWxscyA8PSAyMDAwLCAwLjAxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShudW1fY2VsbHMgPD0gMzAwMCwgMC4wMjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKG51bV9jZWxscyA8PSA0MDAwLCAwLjAzMSwgMC4wMzkpKSkpCiAgIyBNb2RlbCBob21vdHlwaWMgZG91YmxldHMKICBhbm5vdGF0aW9ucyA8LSBzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dQG1ldGEuZGF0YSRzZXVyYXRfY2x1c3RlcnMKICBob21vdHlwaWMucHJvIDwtIG1vZGVsSG9tb3R5cGljKGFubm90YXRpb25zKSAgICAgICAgICAgCiAgbkV4cF9wb2kgPC0gcm91bmQoZG91YmxldF9yYXRlICogbnVtX2NlbGxzKSAgCiAgbkV4cF9wb2kuYWRqIDwtIHJvdW5kKG5FeHBfcG9pKigxLWhvbW90eXBpYy5wcm8pKQogIAogICMgUnVuIERvdWJsZXQgRmluZGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAjIElTU1VFOiBFcnJvciBpbiB4dGZybS5kYXRhLmZyYW1lKHgpIDogY2Fubm90IHh0ZnJtIGRhdGEgZnJhbWVzLCBzb2x2ZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2NocmlzLW1jZ2lubmlzLXVjc2YvRG91YmxldEZpbmRlci9pc3N1ZXMvMjI4CiAgc2V1cmF0X2xpc3RfZmlsdGVyZWRbW2ldXSA8LSBkb3VibGV0RmluZGVyKHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0sIFBDcyA9IDE6MjAsIHBOID0gMC4yNSwgcEsgPSBwSywgbkV4cCA9IG5FeHBfcG9pLmFkaiwgc2N0ID0gRkFMU0UpCgogICMgVmlzdWFsaXplIGRvdWJsZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICMgRHluYW1pY2FsbHkgZ2VuZXJhdGUgdGhlIGNvbHVtbiBuYW1lIGJhc2VkIG9uIHBLIGFuZCBuRXhwX3BvaS5hZGoKICBkZl9jb2x1bW5fbmFtZSA8LSBwYXN0ZTAoIkRGLmNsYXNzaWZpY2F0aW9uc18wLjI1XyIsIHBLLCAiXyIsIG5FeHBfcG9pLmFkaikKICBwNCA8LSBEaW1QbG90KHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0sIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSBkZl9jb2x1bW5fbmFtZSkgKyBnZ3RpdGxlKG5hbWVzKHNldXJhdF9saXN0X2ZpbHRlcmVkKVtpXSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQogIHByaW50KHA0KQogIAogICMgU3Vic2V0IHRoZSBzaW5nbGV0IGNlbGxzIChjdXQgdGhlIGRvdWJsZXQgY2VsbHMpLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAjIFZpc3VhbGl6ZSBob3cgbWFueSBnZW5lcyBhbmQgY2VsbHMgYmVmb3JlIERGIHByb2Nlc3NpbmcKICBzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dQGFzc2F5cyRSTkFAbGF5ZXJzJGNvdW50c0BEaW0KICAKICAjIEtlZXAgb25seSB0aGUgc2luZ2xldCBieSBzdWJzZXQoKQogICNJU1NVRTogRXJyb3IgaW4gRmV0Y2hEYXRhKCk6ISBOb25lIG9mIHRoZSByZXF1ZXN0ZWQgdmFyaWFibGVzIHdlcmUgZm91bmQgYnkgdXNpbmcgCiAgI2Bwcm9fZmlsdGVyIDwtIHN1YnNldChzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dLCBzdWJzZXQgPSBzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dQG1ldGEuZGF0YVtbZGZfY29sdW1uX25hbWVdXSA9PSAiU2luZ2xldCIpYAogICMgVGhlIHNvbHV0aW9uIGlzIG1vZGlmaWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2NocmlzLW1jZ2lubmlzLXVjc2YvRG91YmxldEZpbmRlci9pc3N1ZXMvODQjaXNzdWVjb21tZW50LTY0NTU5MDIwOQogIHByb19maWx0ZXIgPC0gc3Vic2V0KHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV0sIAogICAgICAgICAgICAgICAgICAgICBjZWxscyA9IHJvd25hbWVzKHNldXJhdF9saXN0X2ZpbHRlcmVkW1tpXV1AbWV0YS5kYXRhKVsKICAgICAgICAgICAgICAgICAgICAgICB3aGljaChzZXVyYXRfbGlzdF9maWx0ZXJlZFtbaV1dQG1ldGEuZGF0YVtbZGZfY29sdW1uX25hbWVdXSA9PSAiU2luZ2xldCIpCiAgICAgICAgICAgICAgICAgICAgIF0pCiAgCiAgIyBWaXN1YWxpemUgaG93IG1hbnkgZ2VuZXMgYW5kIGNlbGxzIGFmdGVyIERGIHByb2Nlc3NpbmcKICBwcm9fZmlsdGVyQGFzc2F5cyRSTkFAbGF5ZXJzJGNvdW50c0BEaW0KCiAgIyBEZWZpbmUgdGhlIFJEUyBmaWxlbmFtZSB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aAogIHJkc19maWxlbmFtZTIgPC0gcGFzdGUwKCIvVXNlcnMveXVuY2hpY2hlbi8xMTMtMl9zY1JOQS9maW5hbF9wcm9qZWN0L3Byb2Nlc3NlZF9kYXRhLyIsICJkb3VibGV0X3JlbW92ZWRfIiwgbmFtZXMoc2V1cmF0X2xpc3RfZmlsdGVyZWQpW2ldLCAiLnJkcyIpCgogICMgU2F2ZSB0aGUgU2V1cmF0IG9iamVjdCB0byB0aGUgUkRTIGZpbGUKICBzYXZlUkRTKHByb19maWx0ZXIsIGZpbGUgPSByZHNfZmlsZW5hbWUyKQp9CmBgYAoKIyBEYXRhIEludGVncmF0aW9uIGJ5IEhhcm1vbnkKYGBge3J9CiMgUmVhZCB0aGUgUkRTIGZpbGVzIHRoYXQgaGF2ZSByZW1vdmVkIGRvdWJsZXRzCnJkc19maWxlcyA8LSBsaXN0LmZpbGVzKCIvVXNlcnMveXVuY2hpY2hlbi8xMTMtMl9zY1JOQS9maW5hbF9wcm9qZWN0L3Byb2Nlc3NlZF9kYXRhLyIsIAogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gIl5kb3VibGV0X3JlbW92ZWRfLipcXC5yZHMkIiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwubmFtZXMgPSBUUlVFKQoKIyBJbml0aWFsaXplIGFuIGVtcHR5IGxpc3QgdG8gc3RvcmUgdGhlIFNldXJhdCBvYmplY3RzCnNldXJhdF9saXN0X3JtZCA8LSBsaXN0KCkKCiMgTG9vcCBvdmVyIGVhY2ggUkRTIGZpbGUgYW5kIHJlYWQgaXQgaW50byB0aGUgbGlzdApmb3IgKGZpbGUgaW4gcmRzX2ZpbGVzKSB7CiAgIyBSZWFkIHRoZSBTZXVyYXQgb2JqZWN0IGZyb20gdGhlIFJEUyBmaWxlCiAgc2V1cmF0X29iaiA8LSByZWFkUkRTKGZpbGUpCiAgCiAgIyBFeHRyYWN0IHRoZSBzYW1wbGUgbmFtZSBmcm9tIHRoZSBmaWxlbmFtZSAob3B0aW9uYWwsIGZvciBuYW1pbmcpCiAgc2FtcGxlX25hbWUgPC0gZ3N1YigiXmRvdWJsZXRfcmVtb3ZlZF8iLCAiIiwgZ3N1YigiLnJkcyIsICIiLCBiYXNlbmFtZShmaWxlKSkpICAKICAKICAjIEFkZCB0aGUgU2V1cmF0IG9iamVjdCB0byB0aGUgbGlzdCB3aXRoIHNhbXBsZV9uYW1lIGFzIGtleQogIHNldXJhdF9saXN0X3JtZFtbc2FtcGxlX25hbWVdXSA8LSBzZXVyYXRfb2JqCn0KCiMgcHJpbnQgc2FtcGxlIG5hbWVzIHRvIGNoZWNrIGlmIGFsbCB0aGUgb2JqZWN0cyBhcmUgbG9hZGVkIHByb3Blcmx5IGJ5IGluc3BlY3RpbmcgdGhlIGxpc3QKcHJpbnQobmFtZXMoc2V1cmF0X2xpc3Rfcm1kKSkgIApgYGAKCiMjIFZpc3VhbGl6ZSBiYXRjaCBlZmZlY3RzIGJlZm9yZSBpbnRlZ3JhdGlvbgpgYGB7cn0KIyBNZXJnZSBTZXVyYXQgb2JqZWN0cyBmcm9tIHRoZSBsaXN0LCB1c2luZyBzYW1wbGUgbmFtZXMgYXMgdGhlIGNlbGwgaWRlbnRpZmllcnMKc2V1cmF0X21lcmdlZF9ybWQgPC0gbWVyZ2Uoc2V1cmF0X2xpc3Rfcm1kW1sxXV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHNldXJhdF9saXN0X3JtZFsyOmxlbmd0aChzZXVyYXRfbGlzdF9ybWQpXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQuY2VsbC5pZHMgPSBuYW1lcyhzZXVyYXRfbGlzdF9ybWQpKQojIE9yZGVyIHRoZSBsZXZlbHMgdG8gbWFrZSBOSFMgc2hvd2VkIGJlZm9yZSBBRCAKc2V1cmF0X21lcmdlZF9ybWQkU2FtcGxlIDwtIGZhY3RvcihzZXVyYXRfbWVyZ2VkX3JtZCRTYW1wbGUsIGxldmVscyA9IGMoIk5IUzEiLCAiTkhTMiIsICJOSFMzIiwgIkFEMiIsICJBRDMiLCAiQUQ0IiwgIkFENSIpKQoKIyBQcmVwcm9jZXNzIHRoZSBtZXJnZWQgU2V1cmF0IG9iamVjdCB1c2luZyBzdGFuZGFyZCB3b3JrZmxvdwpzZXVyYXRfbWVyZ2VkX3JtZCA8LSBzZXVyYXRfbWVyZ2VkX3JtZCAlPiUKICBGaW5kVmFyaWFibGVGZWF0dXJlcygpICU+JQogIFNjYWxlRGF0YSgpICU+JQogIFJ1blBDQShucGNzID0gMjApICAjIFNldCB0aGUgbnVtYmVyIG9mIFBDcyBiYXNlZCBvbiB5b3VyIGFuYWx5c2lzIG5lZWRzCgojIEVsYm93IFBsb3QgdG8gdmlzdWFsaXplIHRoZSBvcHRpbWFsIG51bWJlciBvZiBQQ3MKRWxib3dQbG90KHNldXJhdF9tZXJnZWRfcm1kKQoKIyBGaW5kIE5laWdoYm9ycwpzZXVyYXRfbWVyZ2VkX3JtZCA8LSBGaW5kTmVpZ2hib3JzKHNldXJhdF9tZXJnZWRfcm1kLCBkaW1zID0gMToyMCkgICMgVXNpbmcgdGhlIGZpcnN0IDIwIFBDcwoKIyBGaW5kIENsdXN0ZXJzIChSZXNvbHV0aW9uIGNhbiBiZSBhZGp1c3RlZCkKc2V1cmF0X21lcmdlZF9ybWQgPC0gRmluZENsdXN0ZXJzKHNldXJhdF9tZXJnZWRfcm1kLCByZXNvbHV0aW9uID0gMC41KSAgIyBBZGp1c3QgcmVzb2x1dGlvbiBiYXNlZCBvbiB5b3VyIGNsdXN0ZXJpbmcgbmVlZHMKCiMgUnVuIFVNQVAgZm9yIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbgpzZXVyYXRfbWVyZ2VkX3JtZCA8LSBSdW5VTUFQKHNldXJhdF9tZXJnZWRfcm1kLCBkaW1zID0gMToyMCkgICMgWW91IGNhbiBhZGp1c3QgdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGlmIG5lY2Vzc2FyeQoKIyBWaXN1YWxpemUgVU1BUApwMSA8LSBEaW1QbG90KHNldXJhdF9tZXJnZWRfcm1kLCByZWR1Y3Rpb24gPSAidW1hcCIsIGxhYmVsID0gVFJVRSwgZ3JvdXAuYnkgPSAiU2FtcGxlIikKcDIgPC0gRGltUGxvdChzZXVyYXRfbWVyZ2VkX3JtZCwgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gIkNvbmRpdGlvbiIpCgpwMSArIHAyCmBgYApGcm9tIHRoZSBub24taW50ZWdyYXRlZCByZXN1bHRzLCB3ZSBvYnNlcnZlIGEgYmF0Y2ggZWZmZWN0IGJldHdlZW4gdGhlIE5IUyBhbmQgQUQgY29uZGl0aW9ucy4gVG8gYWRkcmVzcyB0aGlzLCB3ZSBuZWVkIHRvIHBlcmZvcm0gZGF0YSBpbnRlZ3JhdGlvbiB0byBhbGlnbiBjZWxsIHR5cGVzIGFjcm9zcyBjb25kaXRpb25zIChlLmcuLCBOSFMgSUxDIHdpdGggQUQgSUxDKS4gVGhpcyBpbnRlZ3JhdGlvbiB3aWxsIGhlbHAgdXMgaWRlbnRpZnkgbW9yZSBhY2N1cmF0ZSBkaWZmZXJlbnRpYWxseSBleHByZXNzZWQgZ2VuZXMgKERFR3MpIGJ5IHJlZHVjaW5nIGJhdGNoIGVmZmVjdHMgYW5kIGZvY3VzaW5nIG9uIHRoZSB0cnVlIGJpb2xvZ2ljYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiBjb25kaXRpb25zLgoKVGhlIG5leHQgc3RlcCBpcyB0byBkZWNpZGUgb24gdGhlIGludGVncmF0aW9uIG1ldGhvZC4gVGhlIFtTZXVyYXQgdHV0b3JpYWxdKGh0dHBzOi8vc2F0aWphbGFiLm9yZy9zZXVyYXQvYXJ0aWNsZXMvaW50ZWdyYXRpb25faW50cm9kdWN0aW9uKSBzdWdnZXN0cyB1c2luZyBDYW5vbmljYWwgQ29ycmVsYXRpb24gQW5hbHlzaXMgKENDQSkgZm9yIGludGVncmF0aW9uLiBIb3dldmVyLCBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLCBsaWtlIG91cnMgd2l0aCB2YXJ5aW5nIGRvbm9ycyBhbmQgcHJvdG9jb2xzIGJldHdlZW4gTkhTIGFuZCBBRCwgcmVxdWlyZSBhIG1vcmUgcm9idXN0IGFwcHJvYWNoLCBhcyBkZXNjcmliZWQgaW4gW3RoaXMgdHV0b3JpYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9oYmN0cmFpbmluZy9JbnRyby10by1zY1JOQXNlcS9ibG9iL21hc3Rlci9sZXNzb25zLzA2X2ludGVncmF0aW9uLm1kI2NvbXBsZXgtaW50ZWdyYXRpb24tdGFza3MpLiBHaXZlbiB0aGVzZSBjb21wbGV4aXRpZXMsIHdlIHdpbGwgdXNlIEhhcm1vbnkgZm9yIGludGVncmF0aW9uLCBhcyB1c2VkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBvZiB0aGlzIGRhdGFzZXQuCgpUaGVyZSBhcmUgbW9yZSBkaXNjdXNzaW9uIG9uIGhvdyB0byBpbnRlZ3JhdGUgZGlmZmVyZW50IGJpb2xvZ2ljYWwgc2FtcGxlcyBhY3Jvc3MgY29uZGl0aW9ucyBsaWtlIFsxXShodHRwczovL2dpdGh1Yi5jb20vc2F0aWphbGFiL3NldXJhdC9pc3N1ZXMvMjA1OSksIFsyXShodHRwczovL2dpdGh1Yi5jb20vc2F0aWphbGFiL3NldXJhdC9pc3N1ZXMvNDc1MyksIGFuZCBbM10oaHR0cHM6Ly9naXRodWIuY29tL3NhdGlqYWxhYi9zZXVyYXQvZGlzY3Vzc2lvbnMvNTcwMiksIGJ1dCB1c2luZyBIYXJtb255IHNlZW1zIHRvIGJlIGEgYmV0dGVyIHNvbHV0aW9uIGluIG91ciBjYXNlLgoKIyMgVXNlIEhhcm1vbnkgdG8gcGVyZm9ybSBkYXRhIGludGVncmF0aW9uCldlIGZvbGxvd2VkIHRoZSBmaXJzdCBzY2VuYXJpbyBpbiB0aGlzIFtoYXJtb255IHR1dG9yaWFsXShodHRwczovL2dpdGh1Yi5jb20vaGJjdHJhaW5pbmcvSW50cm8tdG8tc2NSTkFzZXEvYmxvYi9tYXN0ZXIvbGVzc29ucy8wNmNfaW50ZWdyYXRpb25faGFybW9ueS5tZCkuCmBgYHtyfQojIGluc3RhbGwgYW5kIGxpYnJhcnkgaGFybW9ueQojIGluc3RhbGwucGFja2FnZXMoImhhcm1vbnkiKQpsaWJyYXJ5KGhhcm1vbnkpCgojIFBlcmZvcm0gbG9nLW5vcm1hbGl6YXRpb24gYW5kIGZlYXR1cmUgc2VsZWN0aW9uLCBhcyB3ZWxsIGFzIFNDVCBub3JtYWxpemF0aW9uIG9uIG1lcmdlZCBvYmplY3QKc2V1cmF0X21lcmdlZF9ybWQgPC0gc2V1cmF0X21lcmdlZF9ybWQgJT4lCiAgICBOb3JtYWxpemVEYXRhKCkgJT4lCiAgICBGaW5kVmFyaWFibGVGZWF0dXJlcyhzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDApICU+JQogICAgU2NhbGVEYXRhKCkgJT4lCiAgICBTQ1RyYW5zZm9ybSh2YXJzLnRvLnJlZ3Jlc3MgPSAicGVyY2VudC5tdCIpCgojIENhbGN1bGF0ZSBQQ3MgdXNpbmcgdmFyaWFibGUgZmVhdHVyZXMgZGV0ZXJtaW5lZCBieSBTQ1RyYW5zZm9ybSAoMzAwMCBieSBkZWZhdWx0KQpzZXVyYXRfbWVyZ2VkX3JtZCA8LSBSdW5QQ0Eoc2V1cmF0X21lcmdlZF9ybWQsIGFzc2F5ID0gIlNDVCIsIG5wY3MgPSA1MCkKCiMgQmVmb3JlIHJ1bm5pbmcgSGFybW9ueSwgbWFrZSBzdXJlIHRoYXQgdGhlIG1ldGFkYXRhIG9mIG91ciBTZXVyYXQgb2JqZWN0IGNvbnRhaW5zIG9uZSAob3Igc2V2ZXJhbCkgdmFyaWFibGUocykgZGVzY3JpYmluZyB0aGUgZmFjdG9yKHMpIHdlIHdhbnQgdG8gaW50ZWdyYXRlIG9uIChlLmcuIG9uZSB2YXJpYWJsZSBmb3IgcGF0aWVudCBzYW1wbGUsIG9uZSB2YXJpYWJsZSBmb3IgY29uZGl0aW9uKQpoYXJtb25pemVkX3NldXJhdCA8LSBSdW5IYXJtb255KHNldXJhdF9tZXJnZWRfcm1kLAoJCQkJZ3JvdXAuYnkudmFycyA9IGMoIlNhbXBsZSIsICJDb25kaXRpb24iKSwKCQkJCXJlZHVjdGlvbiA9ICJwY2EiLCBhc3NheS51c2UgPSAiU0NUIiwgcmVkdWN0aW9uLnNhdmUgPSAiaGFybW9ueSIpCgojIERvIFVNQVAgYW5kIGNsdXN0ZXJpbmcgdXNpbmcgSGFybW9ueSBlbWJlZGRpbmcgaW5zdGVhZCBvZiBQQ0EKaGFybW9uaXplZF9zZXVyYXQgPC0gaGFybW9uaXplZF9zZXVyYXQgJT4lCiAgUnVuVU1BUChyZWR1Y3Rpb24gPSAiaGFybW9ueSIsIGFzc2F5ID0gIlNDVCIsIGRpbXMgPSAxOjQwKSAlPiUKICBGaW5kTmVpZ2hib3JzKHJlZHVjdGlvbiA9ICJoYXJtb255IikgJT4lCiAgRmluZENsdXN0ZXJzKHJlc29sdXRpb24gPSBjKDAuMiwgMC40LCAwLjYsIDAuOCwgMS4wLCAxLjIpKSAjIFRoZSByZXN1bHQgb2YgZGlmZmVyZW50IHJlc29sdXRpb24gaXMgc3RvcmVkIGluIHRoZSBTQ1Rfc25uX3Jlcy5YLlggY29sdW1uIG9mIG1ldGEuZGF0YS4KCiMgVmlzdWFsaXplIFVNQVAKcDMgPC0gRGltUGxvdChoYXJtb25pemVkX3NldXJhdCwgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gIlNhbXBsZSIpCnA0IDwtIERpbVBsb3QoaGFybW9uaXplZF9zZXVyYXQsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgbGFiZWwgPSBUUlVFLCBncm91cC5ieSA9ICJDb25kaXRpb24iKQoKcDMgKyBwNAoKIyBEZWZpbmUgdGhlIFJEUyBmaWxlbmFtZSB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aApyZHNfZmlsZW5hbWUzIDwtIHBhc3RlMCgiL1VzZXJzL3l1bmNoaWNoZW4vMTEzLTJfc2NSTkEvZmluYWxfcHJvamVjdC9wcm9jZXNzZWRfZGF0YS8iLCAiaGFybW9ueV9pbnRlZ3JhdGVkIiwgIi5yZHMiKQoKIyBTYXZlIHRoZSBTZXVyYXQgb2JqZWN0IHRvIHRoZSBSRFMgZmlsZQpzYXZlUkRTKGhhcm1vbml6ZWRfc2V1cmF0LCBmaWxlID0gcmRzX2ZpbGVuYW1lMykKCmBgYAoKCiMgQ2x1c3RlciBpZGVudGlmaWNhdGlvbgoKVG8gY2hvb3NlIHRoZSBjb3JyZWN0IFNldXJhdCBmdW5jdGlvbiBmb3IgaWRlbnRpZnlpbmcgbWFya2VycyBpbiBkaWZmZXJlbnQgY2lyY3Vtc3RhbmNlcywgcmVmZXIgdG8gW3RoaXMgdHV0b3JpYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9oYmN0cmFpbmluZy9JbnRyby10by1zY1JOQXNlcS9ibG9iL21hc3Rlci9sZXNzb25zLzA5X21lcmdlZF9TQ19tYXJrZXJfaWRlbnRpZmljYXRpb24ubWQpLiBJbiBicmllZiwgd2hlbiB0aGUgZ29hbCBpcyB0byAoMSkgaWRlbnRpZnkgbWFya2VycyBmb3IgZWFjaCBjbHVzdGVyLCByZWdhcmRsZXNzIG9mIHRoZSBjb25kaXRpb24sIHdlIHNob3VsZCB1c2UgRmluZENvbnNlcnZlZE1hcmtlcnMoKS4gTm90YWJseSwgc2luY2Ugd2UgdXNlZCBTQ1RyYW5zZm9ybSgpIGluIG91ciBIYXJtb255IHdvcmtmbG93LCB0aGUgZGVmYXVsdCBhc3NheSB3aWxsIGJlIHNldCB0byBTQ1QuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byByZXNldCB0aGUgZGVmYXVsdCBhc3NheSB0byBSTkEgYmVmb3JlIHVzaW5nIEZpbmRDb25zZXJ2ZWRNYXJrZXJzKCkuICgyKSBUbyBpZGVudGlmeSBERUdzIGJldHdlZW4gY29uZGl0aW9ucywgd2Ugc2hvdWxkIGZpcnN0IHVzZSBQcmVwU0NURmluZE1hcmtlcnMoKSwgZm9sbG93ZWQgYnkgRmluZE1hcmtlcnMoKSB0byBpZGVudGlmeSB0aGUgREVHcyBpbiB0aGUgc2FtZSBjbHVzdGVyIG9mIGNlbGxzIGFjcm9zcyBkaWZmZXJlbnQgY29uZGl0aW9ucywgYXMgb3V0bGluZWQgaW4gW3RoaXMgdHV0b3JpYWxdKGh0dHBzOi8vc2F0aWphbGFiLm9yZy9zZXVyYXQvYXJ0aWNsZXMvaW50ZWdyYXRpb25faW50cm9kdWN0aW9uLmh0bWwjcGVyZm9ybS1pbnRlZ3JhdGlvbi13aXRoLXNjdHJhbnNmb3JtLW5vcm1hbGl6ZWQtZGF0YXNldHMpLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjYW4gdXNlIEZpbmRNYXJrZXJzKCkgd2l0aCBSTkEgbGF5ZXIgdG8gdG8gaWRlbnRpZnkgREVHcyBiZXR3ZWVuIGNvbmRpdGlvbnMuCgojIyBBbm5vdGF0ZSBieSBGaW5kQ29uc2VydmVkTWFya2VycygpCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHB1cnJyKQpsaWJyYXJ5KHRpYmJsZSkKCiMgUmVhZCBSRFMKaGFybW9uaXplZF9zZXVyYXQgPC0gcmVhZFJEUygiL1VzZXJzL3l1bmNoaWNoZW4vMTEzLTJfc2NSTkEvZmluYWxfcHJvamVjdC9wcm9jZXNzZWRfZGF0YS9oYXJtb255X2ludGVncmF0ZWQucmRzIikKCiMgQWZ0ZXIgcnVubmluZyBIYXJtb255IG9yIHBlcmZvcm1pbmcgb3RoZXIgbm9ybWFsaXphdGlvbiBzdGVwcywgdXNlIEpvaW5MYXllcnMKaGFybW9uaXplZF9zZXVyYXRbWyJSTkEiXV0gPC0gSm9pbkxheWVycyhoYXJtb25pemVkX3NldXJhdFtbIlJOQSJdXSkKCiMgU2V0IHRoZSBhY3RpdmUgaWRlbnRpdHkgY2xhc3MgdG8gU0NUX3Nubl9yZXMuMC42LCB3aGljaCB0aGUgbnVtYmVyIG9mIGNsdXN0ZXIgaXMgMTcgKHNhbWUgd2l0aCB0aGUgcGFwZXIpCklkZW50cyhoYXJtb25pemVkX3NldXJhdCkgPC0gaGFybW9uaXplZF9zZXVyYXQkU0NUX3Nubl9yZXMuMC42CgojIFNldCBkZWZhdWx0IGFzc2F5IHRvIFJOQQpEZWZhdWx0QXNzYXkoaGFybW9uaXplZF9zZXVyYXQpIDwtICJSTkEiCgpgYGAKCmBgYHtyfQojIFZpc3VhbGl6ZSBVTUFQCnAxIDwtIERpbVBsb3QoaGFybW9uaXplZF9zZXVyYXQsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiQ29uZGl0aW9uIiwgbGFiZWwgPSBUUlVFKQpwMiA8LSBEaW1QbG90KGhhcm1vbml6ZWRfc2V1cmF0LCByZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjAuNiIsIGxhYmVsID0gVFJVRSkgIyBUaGUgY2x1c3RlciBudW1iZXIgaXMgdGhlIHNhbWUgKDE3KSB0byBvcmlnaW5hbCBwYXBlciB3aGVuIHJlc29sdXRpb24gaXMgMC42CnAxICsgcDIKYGBgCgoKYGBge3J9CiMgQ3JlYXRlIGZ1bmN0aW9uIHRvIGdldCBjb25zZXJ2ZWQgbWFya2VycyBmb3IgYW55IGdpdmVuIGNsdXN0ZXIKZ2V0X2NvbnNlcnZlZCA8LSBmdW5jdGlvbihzZXVyYXRfb2JqZWN0LCBjbHVzdGVyKXsKICBGaW5kQ29uc2VydmVkTWFya2VycyhzZXVyYXRfb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgIGlkZW50LjEgPSBjbHVzdGVyLAogICAgICAgICAgICAgICAgICAgICAgIGdyb3VwaW5nLnZhciA9ICJDb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgIG9ubHkucG9zID0gVFJVRSkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gImdlbmUiKSAlPiUKICAgIGxlZnRfam9pbih5ID0gdW5pcXVlKGFubm90YXRpb25zWywgYygiZ2VuZV9uYW1lIiwgImRlc2NyaXB0aW9uIildKSwKICAgICAgICAgICAgICAgYnkgPSBjKCJnZW5lIiA9ICJnZW5lX25hbWUiKSkgJT4lCiAgICBjYmluZChjbHVzdGVyX2lkID0gY2x1c3RlciwgLikKfQoKIyBJdGVyYXRlIGZ1bmN0aW9uIGFjcm9zcyBkZXNpcmVkIGNsdXN0ZXJzCmNvbnNlcnZlZF9tYXJrZXJzIDwtIG1hcF9kZnIoMDoxNiwgZnVuY3Rpb24oY2x1c3RlcikgewogIGdldF9jb25zZXJ2ZWQoaGFybW9uaXplZF9zZXVyYXQsIGNsdXN0ZXIgPSBjbHVzdGVyKQp9KQpgYGAKCgpgYGB7cn0KIyBGaWx0ZXIgdGhlIHRvcCA1IG1hcmtlcnMgZm9yIGVhY2ggY2x1c3RlciAKbG9nMmZjX3RocmVzaG9sZCA8LSAxICAgICMgTWluaW11bSBsb2cyIGZvbGQgY2hhbmdlCnBjdF9kaWZmX3RocmVzaG9sZCA8LSAwLjMgICMgTWluaW11bSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gcGN0LjEgYW5kIHBjdC4yCgp0b3A1IDwtIGNvbnNlcnZlZF9tYXJrZXJzICU+JQogIGdyb3VwX2J5KGNsdXN0ZXJfaWQpICU+JQogIGZpbHRlcihhYnMoQURfcGN0LjEgLSBBRF9wY3QuMikgPiBwY3RfZGlmZl90aHJlc2hvbGQgJiAgICAjIERpZmZlcmVuY2UgaW4gcGVyY2VudGFnZSBvZiBjZWxscyBleHByZXNzaW5nIHRoZSBnZW5lCiAgICAgICAgIGFicyhOSFNfcGN0LjEgLSBOSFNfcGN0LjIpID4gcGN0X2RpZmZfdGhyZXNob2xkICYgICAjIERpZmZlcmVuY2UgaW4gcGVyY2VudGFnZSBmb3IgTkhTIGNvbmRpdGlvbgogICAgICAgICAoYWJzKEFEX2F2Z19sb2cyRkMpID4gbG9nMmZjX3RocmVzaG9sZCB8IGFicyhOSFNfYXZnX2xvZzJGQykgPiBsb2cyZmNfdGhyZXNob2xkKSAmICAjIExhcmdlIGZvbGQgY2hhbmdlCiAgICAgICAgICBOSFNfcGN0LjEgPiAwLjYgJgogICAgICAgICAgQURfcGN0LjEgPiAwLjYpICU+JQogIHNsaWNlX2hlYWQobiA9IDUpICU+JQogIHVuZ3JvdXAoKQoKIyBDaGVjayB0aGUgdG9wIDUgbWFya2VycyBzZWxlY3RlZApWaWV3KHRvcDUpCgojIENyZWF0ZSBhIGhlYXRtYXAgZm9yIHRoZSBzZWxlY3RlZCBtYXJrZXJzCkRvSGVhdG1hcChoYXJtb25pemVkX3NldXJhdCwgZmVhdHVyZXMgPSB0b3A1JGdlbmUpICsgTm9MZWdlbmQoKQpgYGAKCmBgYHtyfQojIEZpbHRlciB0aGUgdG9wIDEwIG1hcmtlcnMgZm9yIGVhY2ggY2x1c3RlciAKbG9nMmZjX3RocmVzaG9sZCA8LSAxICAgICMgTWluaW11bSBsb2cyIGZvbGQgY2hhbmdlCnBjdF9kaWZmX3RocmVzaG9sZCA8LSAwLjMgICMgTWluaW11bSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gcGN0LjEgYW5kIHBjdC4yCgp0b3AxMCA8LSBjb25zZXJ2ZWRfbWFya2VycyAlPiUKICBncm91cF9ieShjbHVzdGVyX2lkKSAlPiUKICBmaWx0ZXIoYWJzKEFEX3BjdC4xIC0gQURfcGN0LjIpID4gcGN0X2RpZmZfdGhyZXNob2xkICYgICAgIyBEaWZmZXJlbmNlIGluIHBlcmNlbnRhZ2Ugb2YgY2VsbHMgZXhwcmVzc2luZyB0aGUgZ2VuZQogICAgICAgICBhYnMoTkhTX3BjdC4xIC0gTkhTX3BjdC4yKSA+IHBjdF9kaWZmX3RocmVzaG9sZCAmICAgIyBEaWZmZXJlbmNlIGluIHBlcmNlbnRhZ2UgZm9yIE5IUyBjb25kaXRpb24KICAgICAgICAgKGFicyhBRF9hdmdfbG9nMkZDKSA+IGxvZzJmY190aHJlc2hvbGQgfCBhYnMoTkhTX2F2Z19sb2cyRkMpID4gbG9nMmZjX3RocmVzaG9sZCkgJiAgIyBMYXJnZSBmb2xkIGNoYW5nZQogICAgICAgICAgTkhTX3BjdC4xID4gMC42ICYKICAgICAgICAgIEFEX3BjdC4xID4gMC42KSAlPiUKICBzbGljZV9oZWFkKG4gPSAxMCkgJT4lCiAgdW5ncm91cCgpCgojIENoZWNrIHRoZSB0b3AgMTAgbWFya2VycyBzZWxlY3RlZApWaWV3KHRvcDEwKQoKIyBDcmVhdGUgYSBoZWF0bWFwIGZvciB0aGUgc2VsZWN0ZWQgbWFya2VycwpEb0hlYXRtYXAoaGFybW9uaXplZF9zZXVyYXQsIGZlYXR1cmVzID0gdG9wMTAkZ2VuZSkgKyBOb0xlZ2VuZCgpCmBgYApBZnRlciBpbnNwZWN0aW5nIHRoZSB0b3A1LzEwIGdlbmVzLCB0aGUgYW5ub3RhdGlvbiBpcyBhcyBmb2xsb3c6CgoxOiBOSwoyOiBLQwo0OiBLQwo1OiBLQwo2OiBOSwo5OiBJTENzCjEwOiBGQgoxMzogQgoxNjogSUxDcwoKU29tZSBjbHVzdGVyIG1hcmtlcnMgZG8gbm90IGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgY2VsbCB0eXBlIChjbHVzdGVyIDAsIDMsIDcsIDgsIDExLCAxMiwgMTQsIDE1KS4gTW9yZW92ZXIsIFQgY2VsbHMgKFQpLCBNZWxhbm9jeXRlcyAoTUVMKSwgUGhhZ29jeXRlcyAoUEgpLCBFbmRvdGhlbGlhbCBjZWxscyAoRUMpLCBhbmQgU21vb3RoIG11c2NsZSBjZWxscyAoU01DKSBhcmUgcHJlc2VudCBpbiB0aGUgcGFwZXLigJlzIGNsdXN0ZXJzIGJ1dCBhYnNlbnQgaW4gb3Vycy4gCgpUbyByZXNvbHZlIHRoZXNlIGlzc3Vlcywgd2UgaW5zcGVjdCB0aGUgbWFya2VycyBmcm9tIHRoZSBwYXBlciBhcyB3ZWxsIGFzIHRoZSBjYW5vbmljYWwgbWFya2VycyBpbiBlYWNoIGNsdXN0ZXIuCgoKIyMgQW5ub3RhdGUgYnkgdGhlIG1hcmtlcnMgZnJvbSB0aGUgcGFwZXIgYW5kIGJ5IHRoZSBjYW5vbmljYWwgbWFya2VycwoKYGBge3J9CiMgUGxvdCBhIGRvdCBwbG90IHRvIHZpc3VhbGl6ZSB0aGUgbWFya2VyIGdlbmVzIGZyb20gdGhlIHBhcGVyIGluIGVhY2ggY2x1c3RlcgoKbGlicmFyeShnZ3Bsb3QyKQoKbWFya2VyX2dlbmVzIDwtIGMoCiAgIyBJTENzCiAgIlBUUFJDIiwgIktMUkIxIiwgIklMN1IiLAogICMgTksgY2VsbHMKICAiS0xSRDEiLAogICMgS2VyYXRpbm9jeXRlcyAoS0MpCiAgIktSVDEiLCAiS1JUNSIsCiAgIyBUIGNlbGxzIChUKQogICJDRDNEIiwKICAjIEZpYnJvYmxhc3RzIChGQikKICAiQ09MNkExIiwKICAjIEItY2VsbCBsaW5lYWdlIChCKQogICJDRDc5QSIsICJJR0hHMSIsCiAgIyBQaGFnb2N5dGVzIChQSCkKICAiTFlaIiwKICAjIEVuZG90aGVsaWFsIGNlbGxzIChFQykKICAiQ0xFQzE0QSIsICJQRUNBTTEiLAogICMgU21vb3RoIG11c2NsZSBjZWxscyAoU01DKQogICJUQUdMTiIsICJBQ1RBMiIsCiAgIyBNZWxhbm9jeXRlcyAoTUVMKQogICJNTEFOQSIKKQoKRG90UGxvdChoYXJtb25pemVkX3NldXJhdCwgZmVhdHVyZXMgPSBtYXJrZXJfZ2VuZXMpICsgCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICJibHVlIiwgbWlkID0gImxpZ2h0Z3JleSIsIGhpZ2ggPSAicmVkIikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpCgpgYGAKRnJvbSB0aGUgcmVzdWx0LCB0aGUgYW5ub3RhdGlvbiBpcyBhcyBmb2xsb3c6CjA6IElMQ3MKMTogTksKMjogS0MKMzogSUxDcytLQwo0OiBLQwo1OiBLQwo2OiBOSwo3OiBLQwo4OiBJTENzCjk6IElMQ3MKMTA6IEZCCjExOiBTTUMrRUMKMTI6IElMQ3MKMTM6IEIKMTQ6IElMQ3MKMTU6IFBICjE2OiBJTENzCgpTaW5jZSBUIGNlbGxzIChUKSBhbmQgTWVsYW5vY3l0ZXMgKE1FTCkgd2VyZSBub3QgZm91bmQsIHdlIHBsb3QgbW9yZSBjYW5vbmljYWwgbWFya2VycyB0byBjaGVjayB0aGUgYW5ub3RhdGlvbiBhbmQgYWxzbyBhZGQgY2VsbCB0eXBlIGxhYmVsIG9uIGdlbmVzLgoKYGBge3J9CiMgVXNpbmcgZ2doNHggYW5kIGRvdCBwbG90IHRvIHZpc3VsaXplIGNhbm9uaWNhbCBtYXJrZXJzCgojIGluc3RhbGwucGFja2FnZXMoImdnaDR4IikKIyBsaWJyYXJ5KGdnaDR4KQoKZ2VuZV9jZWxsdHlwZV9kZiA8LSBkYXRhLmZyYW1lKAogIGdlbmUgPSBjKAogICAgIyBJTENzCiAgICAiUFRQUkMiLCAiS0xSQjEiLCAiSUw3UiIsCiAgICAjIE5LIGNlbGxzCiAgICAiS0xSRDEiLCAiTktHNyIsICJHTkxZIiwgIkdaTUIiLAogICAgIyBUIGNlbGxzCiAgICAiQ0QzRCIsICJDRDQiLCAiQ0Q4QSIsICJUUkFDIiwgIlRSQkMxIiwKICAgICMgS2VyYXRpbm9jeXRlcwogICAgIktSVDEiLCAiS1JUNSIsICJLUlQxMCIsCiAgICAjIEZpYnJvYmxhc3RzCiAgICAiQ09MNkExIiwgIkNPTDFBMSIsICJDT0wxQTIiLAogICAgIyBCLWxpbmVhZ2UgY2VsbHMgKGIgY2VsbHMgKyBwbGFzbWEgY2VsbHMpCiAgICAiQ0Q3OUEiLCAiSUdIRzEiLCAiTVpCMSIsICJKQ0hBSU4iLAogICAgIyBQaGFnb2N5dGVzCiAgICAiTFlaIiwKICAgICMgRW5kb3RoZWxpYWwgY2VsbHMKICAgICJDTEVDMTRBIiwgIlBFQ0FNMSIsCiAgICAjIFNtb290aCBtdXNjbGUgY2VsbHMKICAgICJUQUdMTiIsICJBQ1RBMiIsCiAgICAjIE1lbGFub2N5dGVzCiAgICAiTUxBTkEiLAogICAgIyBEZW5kcml0aWMgY2VsbHMKICAgICJDRDFBIiwgIkNEMjA5IiwKICAgICMgTWFzdCBjZWxscwogICAgIlRQU0FCMSIsICJDUEEzIgogICksCiAgCiAgY2VsbF90eXBlID0gYygKICAgIHJlcCgiSUxDcyIsIDMpLAogICAgcmVwKCJOSyIsIDQpLAogICAgcmVwKCJUIiwgNSksCiAgICByZXAoIktDIiwgMyksCiAgICByZXAoIkZCIiwgMyksCiAgICByZXAoIkIiLCA0KSwKICAgIHJlcCgiUEgiLCAxKSwKICAgIHJlcCgiRUMiLCAyKSwKICAgIHJlcCgiU01DIiwgMiksCiAgICByZXAoIk1FTCIsIDEpLAogICAgcmVwKCJEQyIsIDIpLAogICAgcmVwKCJNQyIsIDIpCiAgKSwKICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UKKQoKCm1hcmtlcl9nZW5lcyA8LSBnZW5lX2NlbGx0eXBlX2RmJGdlbmUKCnAgPC0gRG90UGxvdChoYXJtb25pemVkX3NldXJhdCwgZmVhdHVyZXMgPSBtYXJrZXJfZ2VuZXMpICsgCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICJibHVlIiwgbWlkID0gImxpZ2h0Z3JleSIsIGhpZ2ggPSAicmVkIikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpCgpwJGRhdGEgPC0gcCRkYXRhICU+JQogIGxlZnRfam9pbihnZW5lX2NlbGx0eXBlX2RmLCBieSA9IGMoImZlYXR1cmVzLnBsb3QiID0gImdlbmUiKSkKCnAgPC0gcCArCnNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKyAgIyBtb3ZlIHggYXhpcyB0byB0aGUgdG9wLCBtYWtpbmcgaXQgbGlrZSB0aGUgdGl0bGUgb2YgZWFjaCBmZWF0dXJlcwpmYWNldF9uZXN0ZWQofmNlbGxfdHlwZSArIGZlYXR1cmVzLnBsb3QsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlX3giKSArCmd1aWRlcyh4ID0gZ3VpZGVfYXhpc19uZXN0ZWQoY2hlY2sub3ZlcmxhcCA9IFRSVUUpKSArCnRoZW1lKAogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMCksCiAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksCiAgcGFuZWwuc3BhY2luZy54ID0gdW5pdCgwLjIsICJsaW5lcyIpCikKCmdnc2F2ZShmaWxlbmFtZSA9ICJhbm5vdGF0aW9uLnBuZyIsIHBsb3QgPSBwLCB3aWR0aCA9IDE1LCBoZWlnaHQgPSA4LCBkcGkgPSAzMDApCgpwCmBgYApBZnRlciBwbG90dGluZyBhZGRpdGlvbmFsIG1hcmtlciBnZW5lcywgd2Ugc3RpbGwgZGlkIG5vdCBpZGVudGlmeSBhIGRpc3RpbmN0IFQgY2VsbCBjbHVzdGVyLiBBIGxpa2VseSBleHBsYW5hdGlvbiBpcyB0aGF0IHRoZSBhdXRob3JzIHNvcnRlZCBmb3IgQ0Q0NeKBuiBMaW7igbsgQ0Qz4oG7IGNlbGxzLCB0aGVyZWJ5IGV4Y2x1ZGluZyBDRDMtZXhwcmVzc2luZyBUIGNlbGxzIGR1cmluZyB0aGUgc29ydGluZyBzdGVwLiBSZWdhcmRpbmcgbWVsYW5vY3l0ZXMsIHRoZSBjbHVzdGVyIGlkZW50aWZpZWQgYnkgdGhlIGF1dGhvcnMgd2FzIHNtYWxsIGFuZCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgZHVyaW5nIGRvdWJsZXQgZmlsdGVyaW5nIG9yIG90aGVyIHByb2Nlc3Npbmcgc3RlcHMuCgpJbnRlcmVzdGluZ2x5LCB3ZSBvYnNlcnZlZCB0aGF0IGNlbGxzIGluIGNlcnRhaW4gTksgY2x1c3RlcnMgKGNsdXN0ZXIgMSkgYW5kIElMQyBjbHVzdGVycyAoY2x1c3RlcnMgMCBhbmQgMTYpIGV4cHJlc3MgVFJCQzEgd2l0aG91dCBzdWZmaWNpZW50IGV4cHJlc3Npb24gb2Ygb3RoZXIgVCBjZWxsIG1hcmtlcnMsIGFzIHNob3duIGluIHRoZSBmZWF0dXJlIHBsb3RzIGJlbG93LiBGcm9tIHRoZSBmZWF0dXJlIHBsb3RzLCB0aGUgTksgYW5kIHRoZSBJTENzIGNsdXN0ZXJzIGFyZSBjb3JyZWxhdGVkIHRvIHRoZWlyIG1hcmtlciBleHByZXNzaW9uLCBob3dldmVyIHRoZSBzdWJzZXQgb2YgSUxDcyBjYW5ub3QgYmUgZGlyZWN0bHkgZGlzdGluZ3Vpc2hlZCBieSB0aGUgY29udmVudGlvbmFsIG1hcmtlci4KCgpgYGB7cn0KIyBUIGNlbGwgbWFya2VycyAoVFJCQzEgc2hvdWxkIGJlIFQgY2VsbCBtYXJrZXJzIGJ1dCB3ZSBvYnNlcnZlIElMQ3MgYW5kIE5LIGV4cHJlc3MgaXQpCkZlYXR1cmVQbG90KGhhcm1vbml6ZWRfc2V1cmF0LCBmZWF0dXJlcyA9IGMoIkNEM0QiLCAiQ0QzRSIsICJDRDNHIiwgIlRSQkMxIikpCkZlYXR1cmVQbG90KGhhcm1vbml6ZWRfc2V1cmF0LCBmZWF0dXJlcyA9IGMoIkNEM0QiLCAiQ0QzRSIsICJDRDNHIiwgIlRSQUMiKSkKCiMgSUxDcyBhbmQgTksgbWFya2VycwpGZWF0dXJlUGxvdChoYXJtb25pemVkX3NldXJhdCwgZmVhdHVyZXMgPSBjKCJJTDdSIiwgIktMUkIxIiwgIkdOTFkiLCAiTktHNyIsICJLTFJEMSIpKQoKIyBJTEMxCkZlYXR1cmVQbG90KGhhcm1vbml6ZWRfc2V1cmF0LCBmZWF0dXJlcyA9IGMoIklMN1IiLCAiS0xSQjEiLCAiVEJYMjEiKSwgbGFiZWwgPSBUUlVFKQojIElMQzIKRmVhdHVyZVBsb3QoaGFybW9uaXplZF9zZXVyYXQsIGZlYXR1cmVzID0gYygiSUw3UiIsICJLTFJCMSIsICJHQVRBMyIsICJST1JBIiksIGxhYmVsID0gVFJVRSkKIyBJTEMzCkZlYXR1cmVQbG90KGhhcm1vbml6ZWRfc2V1cmF0LCBmZWF0dXJlcyA9IGMoIklMN1IiLCAiS0xSQjEiLCAiUk9SQyIsICJBSFIiKSwgbGFiZWwgPSBUUlVFKQoKCmBgYAoKYGBge3J9CiMgVmlzdWFsaXplIHRoZSBhbm5vdGF0aW9uIHdpdGggdW1hcAoKY2x1c3Rlcl9pZHMgPC0gbGV2ZWxzKGhhcm1vbml6ZWRfc2V1cmF0JFNDVF9zbm5fcmVzLjAuNikKbmV3X2NsdXN0ZXJfbmFtZXMgPC0gYygKICAiSUxDcyIsICJOSyIsICJLQyIsICJVSyIsICJLQyIsIAogICJLQyIsICJOSyIsICJLQyIsICJJTENzK05LIiwgIklMQ3MiLAogICJGQiIsICJFQytTTUMiLCAiSUxDcyIsICJCIiwgIlVLIiwgIlBIIiwgIklMQ3MiCikKCm5hbWVzKG5ld19jbHVzdGVyX25hbWVzKSA8LSBjbHVzdGVyX2lkcwoKaGFybW9uaXplZF9zZXVyYXQkY2VsbHR5cGUucGFwZXIgPC0gcGx5cjo6bWFwdmFsdWVzKAogIHggPSBoYXJtb25pemVkX3NldXJhdCRTQ1Rfc25uX3Jlcy4wLjYsCiAgZnJvbSA9IGNsdXN0ZXJfaWRzLAogIHRvID0gbmV3X2NsdXN0ZXJfbmFtZXMKKQoKdGFibGUoaGFybW9uaXplZF9zZXVyYXQkY2VsbHR5cGUucGFwZXIpCgpJZGVudHMoaGFybW9uaXplZF9zZXVyYXQpIDwtIGhhcm1vbml6ZWRfc2V1cmF0JGNlbGx0eXBlLnBhcGVyCgpwMyA8LSBEaW1QbG90KGhhcm1vbml6ZWRfc2V1cmF0LCByZWR1Y3Rpb24gPSAidW1hcCIsIGxhYmVsID0gVFJVRSkgKwogIGdndGl0bGUoIkFubm90YXRpb24gYnkgY2Fub25pY2FsIG1hcmtlcnMiKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpCgpwMiArIHAzCmBgYApgYGB7cn0Kc2F2ZVJEUyhoYXJtb25pemVkX3NldXJhdCwgZmlsZSA9ICIvVXNlcnMveXVuY2hpY2hlbi8xMTMtMl9zY1JOQS9maW5hbF9wcm9qZWN0L3Byb2Nlc3NlZF9kYXRhL2Nhbm9uaWNhbF9hbm5vdGF0ZWRfc2V1cmF0LnJkcyIpCmBgYAoKCgojIyBDb21wYXJlIHRoZSBtYXJrZXIgZ2VuZXMgdG8gdGhvc2UgaW4gdGhlIHBhcGVyCgpgYGB7cn0KIyBDcmVhdGUgZnVuY3Rpb24gdG8gZ2V0IGNvbnNlcnZlZCBtYXJrZXJzIGZvciBhbnkgZ2l2ZW4gY2x1c3RlcgpnZXRfY29uc2VydmVkIDwtIGZ1bmN0aW9uKHNldXJhdF9vYmplY3QsIGNsdXN0ZXIpewogIEZpbmRDb25zZXJ2ZWRNYXJrZXJzKHNldXJhdF9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQuMSA9IGNsdXN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmcudmFyID0gImNlbGx0eXBlLnBhcGVyIiwgICMgVXNlIHRoZSBjZWxsdHlwZS5wYXBlciBmb3IgZ3JvdXBpbmcKICAgICAgICAgICAgICAgICAgICAgICBvbmx5LnBvcyA9IFRSVUUpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJnZW5lIikgJT4lCiAgICBsZWZ0X2pvaW4oeSA9IHVuaXF1ZShhbm5vdGF0aW9uc1ssIGMoImdlbmVfbmFtZSIsICJkZXNjcmlwdGlvbiIpXSksCiAgICAgICAgICAgICAgIGJ5ID0gYygiZ2VuZSIgPSAiZ2VuZV9uYW1lIikpICU+JQogICAgY2JpbmQoY2x1c3Rlcl9pZCA9IGNsdXN0ZXIsIC4pCn0KCiMgSXRlcmF0ZSBmdW5jdGlvbiBhY3Jvc3MgZGVzaXJlZCBjbHVzdGVycwpjb25zZXJ2ZWRfbWFya2VycyA8LSBtYXBfZGZyKDA6MTYsIGZ1bmN0aW9uKGNsdXN0ZXIpIHsKICBnZXRfY29uc2VydmVkKGhhcm1vbml6ZWRfc2V1cmF0LCBjbHVzdGVyID0gY2x1c3RlcikKfSkKCiMgVmlldyB0aGUgY29uc2VydmVkIG1hcmtlcnMKVmlldyhjb25zZXJ2ZWRfbWFya2VycykKCmBgYAoKVGhlIGNvbnNlcnZlZCBtYXJrZXJzIHdlcmUgbWFudWFsbHkgY29tcGFyZWQgdG8gdGhlIERFR3MgcmVwb3J0ZWQgaW4gdGhlIHBhcGVyIChGaWcuIDNHKS4gSW4gdGhlIElMQyBjbHVzdGVycyAoY2x1c3RlcnMgMCwgOSwgMTIsIGFuZCAxNiksIHdlIGlkZW50aWZpZWQgc2ltaWxhciBERUdzIHRvIHRob3NlIGRlc2NyaWJlZCBpbiB0aGUgcGFwZXIsIGluY2x1ZGluZyBDRDUyLCBJTDMyLCBGWFlENSwgSUw3UiwgYW5kIEtMUkIxLiBGb3IgTksgY2VsbHMgKGNsdXN0ZXJzIDEgYW5kIDYpLCB3ZSBmb3VuZCBjb21wYXJhYmxlIERFR3Mgc3VjaCBhcyBOS0c3LCBHTkxZLCBHWk1BLCBDQ0w0LCBDQ0w1LCBDU1Q3LCBUWVJPQlAsIEtMUkQxLCBhbmQgQ1RTVy4KCgojIENvbW11bmljYXRpb24gcGF0aHdheXMgYnkgQ2VsbENoYXQKVGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGV4cGxvcmVzIHNldmVyYWwgZnVuY3Rpb25zIG9mIENlbGxDaGF0LiBIb3dldmVyLCBjb21wYXJpc29uIHdpdGggdGhlIHB1Ymxpc2hlZCByZXN1bHRzIHdhcyBvbmx5IHBlcmZvcm1lZCBpbiB0aGUgc2VjdGlvbiB0aXRsZWQgJ1Zpc3VhbGl6ZSBjaG9yZCBwbG90IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGFtb25nIGNlbGwgdHlwZXMgZm9yIGEgc3BlY2lmaWMgcGF0aHdheScuCgojIyBDb21wdXRlIGFuZCB2aXN1YWxpemUgdGhlIGFnZ3JlZ2F0ZWQgY2VsbC1jZWxsIGNvbW11bmljYXRpb24gbmV0d29yawpgYGB7cn0KIyBpbnN0YWxsLnBhY2thZ2VzKCJCaW9jTWFuYWdlciIpCiMgQmlvY01hbmFnZXI6Omluc3RhbGwoIkJpb2NOZWlnaGJvcnMiKQojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1Yigic3FqaW4vQ2VsbGNoYXQiKQpsaWJyYXJ5KENlbGxDaGF0KQpsaWJyYXJ5KFNldXJhdCkKbGlicmFyeShyZXRpY3VsYXRlKQpsaWJyYXJ5KHBhdGNod29yaykKbGlicmFyeShjaXJjbGl6ZSkKb3B0aW9ucyhzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCmBgYAoKYGBge3J9CiMgQ3JlYXRlIENlbGxDaGF0IG9iamVjdApkYXRhLmlucHV0IDwtIEdldEFzc2F5RGF0YShoYXJtb25pemVkX3NldXJhdCwgYXNzYXkgPSAiUk5BIiwgc2xvdCA9ICJkYXRhIikKbGFiZWxzIDwtIElkZW50cyhoYXJtb25pemVkX3NldXJhdCkKbWV0YSA8LSBkYXRhLmZyYW1lKGdyb3VwID0gbGFiZWxzLCByb3cubmFtZXMgPSBuYW1lcyhsYWJlbHMpKQpjZWxsY2hhdCA8LSBjcmVhdGVDZWxsQ2hhdChvYmplY3QgPSBkYXRhLmlucHV0LCBtZXRhID0gbWV0YSwgZ3JvdXAuYnkgPSAiZ3JvdXAiKQpzYXZlUkRTKGNlbGxjaGF0LCBmaWxlID0gIi9Vc2Vycy95dW5jaGljaGVuLzExMy0yX3NjUk5BL2ZpbmFsX3Byb2plY3QvcHJvY2Vzc2VkX2RhdGEvY2VsbGNoYXRfc2V1cmF0LnJkcyIpCmBgYAoKYGBge3J9CiMgTG9hZCBsaWdhbmQtcmVjZXB0b3IgaW50ZXJhY3Rpb24gZGF0YWJhc2UKQ2VsbENoYXREQi5odW1hbiA8LSBDZWxsQ2hhdERCLmh1bWFuCgojIERlY2lkZSB3aGljaCBjYXRlZ29yeSBvZiBkYXRhIHRvIHVzZQpzaG93RGF0YWJhc2VDYXRlZ29yeShDZWxsQ2hhdERCLmh1bWFuKQpDZWxsQ2hhdERCLnVzZSA8LSBzdWJzZXREQihDZWxsQ2hhdERCLmh1bWFuLCBzZWFyY2ggPSAiU2VjcmV0ZWQgU2lnbmFsaW5nIikKY2VsbGNoYXRAREIgPC0gQ2VsbENoYXREQi51c2UKCiMgU3Vic2V0IHRoZSBvYmplY3QsIG1ha2luZyBjZWxsY2hhdEBkYXRhLnNpZ25hbGluZyBmcm9tIDwwIHggMCBtYXRyaXg+IHRvIDc0NCB4IDE3ODEyIHNwYXJzZSBNYXRyaXggb2YgY2xhc3MgImRnQ01hdHJpeCIsIHdoaWNoIG1lYW5zIHRoZXJlIGFyZSA3NDQgZ2VuZXMgZnJvbSBDZWxsQ2hhdERCLnVzZSBkYXRhYmFzZSB0aGF0IGFyZSBleHByZXNzZWQgaW4gb3VyIGNlbGxjaGF0IG9iamVjdApjZWxsY2hhdCA8LSBzdWJzZXREYXRhKGNlbGxjaGF0KSAKYGBgCmBgYHtyfQojIFByZS1wcm9jZXNzaW5nIHRoZSBleHByZXNzaW9uIGRhdGEKY2VsbGNoYXQgPC0gaWRlbnRpZnlPdmVyRXhwcmVzc2VkR2VuZXMoY2VsbGNoYXQpCmNlbGxjaGF0IDwtIGlkZW50aWZ5T3ZlckV4cHJlc3NlZEludGVyYWN0aW9ucyhjZWxsY2hhdCkKCiMgT3B0aW9uYWw6IHByb2plY3QgZ2VuZSBleHByZXNzaW9uIGRhdGEgb250byBwcm90ZWluLXByb3RlaW4gaW50ZXJhY3Rpb24gKFBQSSkKY2VsbGNoYXQgPC0gcHJvamVjdERhdGEoY2VsbGNoYXQsIFBQSS5odW1hbikKCiMgQ29tcHV0ZSB0aGUgY29tbXVuaWNhdGlvbiBwcm9iYWJpbGl0eSBhbmQgaW5mZXIgY2VsbHVsYXIgY29tbXVuaWNhdGlvbiBuZXR3b3JrCiMgY2VsbGNoYXQgPC0gY29tcHV0ZUNvbW11blByb2IoY2VsbGNoYXQpCmNlbGxjaGF0IDwtIGNvbXB1dGVDb21tdW5Qcm9iKGNlbGxjaGF0LCByYXcudXNlID0gRkFMU0UpICMgdXNlIHRoZSBwcm9qZWN0ZWQgZGF0YQoKIyBGaWx0ZXIgb3V0IHRoZSBjZWxsLWNlbGwgY29tbXVuaWNhdGlvbiBpZiB0aGVyZSBhcmUgb25seSBmZXcgbnVtYmVyIG9mIGNlbGxzIGluIGNlcnRhaW4gY2VsbCBncm91cHMKY2VsbGNoYXQgPC0gZmlsdGVyQ29tbXVuaWNhdGlvbihjZWxsY2hhdCwgbWluLmNlbGxzID0gMTApCgpgYGAKCmBgYHtyfQojIEluZmVyIHRoZSBjZWxsLWNlbGwgY29tbXVuaWNhdGlvbiBhdCBhIHNpZ25hbGluZyBwYXRod2F5IGxldmVsCmNlbGxjaGF0IDwtIGNvbXB1dGVDb21tdW5Qcm9iUGF0aHdheShjZWxsY2hhdCkKCiMgQ2FsY3VsYXRlIHRoZSBhZ2dyZWdhdGVkIGNlbGwtY2VsbCBjb21tdW5pY2F0aW9uIG5ldHdvcmsKY2VsbGNoYXQgPC0gYWdncmVnYXRlTmV0KGNlbGxjaGF0KQpjZWxsY2hhdEBuZXQkY291bnQKY2VsbGNoYXRAbmV0JHdlaWdodApgYGAKCmBgYHtyfQojIFZpc3VhbGl6ZSB0aGUgYWdncmVnYXRlZCBjZWxsLWNlbGwgY29tbXVuaWNhdGlvbiBuZXR3b3JrCmdyb3VwU2l6ZSA8LSBhcy5udW1lcmljKHRhYmxlKGNlbGxjaGF0QGlkZW50cykpCnBhcihtZnJvdyA9IGMoMSwgMiksIHhwZD1UUlVFKQpuZXRWaXN1YWxfY2lyY2xlKGNlbGxjaGF0QG5ldCRjb3VudCwgdmVydGV4LndlaWdodCA9IGdyb3VwU2l6ZSwgCiAgIHdlaWdodC5zY2FsZSA9IFQsIGxhYmVsLmVkZ2U9IEYsIHRpdGxlLm5hbWUgPSAiTnVtYmVyIG9mIGludGVyYWN0aW9ucyIpCm5ldFZpc3VhbF9jaXJjbGUoY2VsbGNoYXRAbmV0JHdlaWdodCwgdmVydGV4LndlaWdodCA9IGdyb3VwU2l6ZSwgCiAgIHdlaWdodC5zY2FsZSA9IFQsIGxhYmVsLmVkZ2U9IEYsIHRpdGxlLm5hbWUgPSAiSW50ZXJhY3Rpb24gd2VpZ2h0cy9zdHJlbmd0aCIpCgpkZXYub2ZmKCkKYGBgCgpgYGB7cn0KIyBFeGFtaW5lIHRoZSBzaWduYWxpbmcgc2VudCBmcm9tIGVhY2ggY2VsbCBncm91cAptYXQgPC0gY2VsbGNoYXRAbmV0JHdlaWdodApwYXIobWZyb3cgPSBjKDIsIDYpLCB4cGQ9VFJVRSkKZm9yIChpIGluIDE6bnJvdyhtYXQpKSB7CiAgbWF0MiA8LSBtYXRyaXgoMCwgbnJvdyA9IG5yb3cobWF0KSwgbmNvbCA9IG5jb2wobWF0KSwgZGltbmFtZXMgPSBkaW1uYW1lcyhtYXQpKQogIG1hdDJbaSwgXSA8LSBtYXRbaSwgXQogIG5ldFZpc3VhbF9jaXJjbGUobWF0MiwgdmVydGV4LndlaWdodCA9IGdyb3VwU2l6ZSwgd2VpZ2h0LnNjYWxlID0gRiwgCiAgICAgICAgICAgICAgICAgICBlZGdlLndlaWdodC5tYXggPSBtYXgobWF0KSwgdGl0bGUubmFtZSA9IHJvd25hbWVzKG1hdClbaV0pCn0KCmRldi5vZmYoKQoKbWF0IDwtIGNlbGxjaGF0QG5ldCR3ZWlnaHQKcGFyKG1mcm93ID0gYygxLCAyKSwgeHBkPVRSVUUpCmZvciAoaSBpbiAxOm5yb3cobWF0KSkgeyAgCiAgbWF0MiA8LSBtYXRyaXgoMCwgbnJvdyA9IG5yb3cobWF0KSwgbmNvbCA9IG5jb2wobWF0KSwgZGltbmFtZXMgPSBkaW1uYW1lcyhtYXQpKSAgCiAgbWF0MltpLCBdIDwtIG1hdFtpLCBdICAKICBuZXRWaXN1YWxfY2lyY2xlKG1hdDIsIHZlcnRleC53ZWlnaHQgPSBncm91cFNpemUsIHdlaWdodC5zY2FsZSA9IFQsIAogICAgICAgICAgICAgICAgICAgZWRnZS53ZWlnaHQubWF4ID0gbWF4KG1hdCksIHRpdGxlLm5hbWUgPSByb3duYW1lcyhtYXQpW2ldKX0KYGBgCgojIyBDb21wdXRlIGFuZCB2aXN1YWxpemUgdGhlIG5ldHdvcmsgY2VudHJhbGl0eSBzY29yZXMgZm9yIHNwZWNpZmljIHBhdGh3YXkKYGBge3IsIGZpZy53aWRlID0gVFJVRSwgZmlnLmFsaWduID0gImNlbnRlciJ9CiMgQ29tcHV0ZSB0aGUgbmV0d29yayBjZW50cmFsaXR5IHNjb3JlcwpjZWxsY2hhdCA8LSBuZXRBbmFseXNpc19jb21wdXRlQ2VudHJhbGl0eShjZWxsY2hhdCwgc2xvdC5uYW1lID0gIm5ldFAiKSAjIHRoZSBzbG90ICduZXRQJyBtZWFucyB0aGUgaW5mZXJyZWQgaW50ZXJjZWxsdWxhciBjb21tdW5pY2F0aW9uIG5ldHdvcmsgb2Ygc2lnbmFsaW5nIHBhdGh3YXlzCgojIFZpc3VhbGl6ZSB0aGUgY29tcHV0ZWQgY2VudHJhbGl0eSBzY29yZXMgdXNpbmcgaGVhdG1hcCwgYWxsb3dpbmcgcmVhZHkgaWRlbnRpZmljYXRpb24gb2YgbWFqb3Igc2lnbmFsaW5nIHJvbGVzIG9mIGNlbGwgZ3JvdXBzCnBhdGh3YXlzLnNob3cgPC0gYygiSUw0IikgIyBJTC00IGlzIG9uZSBvZiB0aGUgc2lnbmlmaWNhbnQgcGF0aHdheSBpZGVudGlmaWVkIGluIHRoZSBwYXBlcgpuZXRBbmFseXNpc19zaWduYWxpbmdSb2xlX25ldHdvcmsoY2VsbGNoYXQsIHNpZ25hbGluZyA9IHBhdGh3YXlzLnNob3csIHdpZHRoID0gOCwgaGVpZ2h0ID0gMi41LCBmb250LnNpemUgPSAxMCkKYGBgCiMjIFZpc3VhbGl6ZSBjaG9yZCBwbG90IHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYXRpb24gYW1vbmcgY2VsbCB0eXBlcyBmb3Igc3BlY2lmaWMgcGF0aHdheQpgYGB7cn0KIyBUaGVzZSA2IHBhdGh3YXlzIGFyZSBtZW50aW9uZWQgYnkgdGhlIHBhcGVyLCB3aGljaCBhcmUgY29tbXVuaWNhdGlvbiBwYXRod2F5cyBiZXR3ZWVuIElMQ3MgYW5kIG90aGVyIGNlbGwgdHlwZXMKbmV0VmlzdWFsX2Nob3JkX2NlbGwoY2VsbGNoYXQsIHNpZ25hbGluZyA9IGMoIklMMiIpKQpuZXRWaXN1YWxfY2hvcmRfY2VsbChjZWxsY2hhdCwgc2lnbmFsaW5nID0gYygiSUw0IikpCm5ldFZpc3VhbF9jaG9yZF9jZWxsKGNlbGxjaGF0LCBzaWduYWxpbmcgPSBjKCJDQ0wiKSkKbmV0VmlzdWFsX2Nob3JkX2NlbGwoY2VsbGNoYXQsIHNpZ25hbGluZyA9IGMoIkNYQ0wiKSkKbmV0VmlzdWFsX2Nob3JkX2NlbGwoY2VsbGNoYXQsIHNpZ25hbGluZyA9IGMoIk1JRiIpKQpuZXRWaXN1YWxfY2hvcmRfY2VsbChjZWxsY2hhdCwgc2lnbmFsaW5nID0gYygiQkFHIikpCmBgYApXZSBpZGVudGlmeSBzaW1pbGFyIGxpZ2FuZC1yZWNlcHRvciBjb21tdW5pY2F0aW9uIGFtb25nIGNlbGwgdHlwZXMgYXMgdGhlIHBhcGVyIChGaWcuIDNJKS4gSUxDcyBleGhpYml0IHN0cm9uZyBsaWdhbmQtcmVjZXB0b3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgY2VsbCB0eXBlcywgcGFydGljdWxhcmx5IGluIHRoZSBJTC00IGFuZCBDWENMIHNpZ25hbGluZyBwYXRod2F5cy4gTksgY2VsbHMgYWxzbyBlbmdhZ2UgaW4gcm9idXN0IGxpZ2FuZC1yZWNlcHRvciBpbnRlcmFjdGlvbnMsIGVzcGVjaWFsbHkgdGhyb3VnaCB0aGUgQ0NMIHNpZ25hbGluZyBwYXRod2F5cy4KCgoKIyBSZS1jbHVzdGVyIElMQ3MgYW5kIE5LIHRvIGNoYXJhY3Rlcml6ZSB0aGUgbW9sZWN1bGFyIGhldGVyb2dlbmVpdHkgb2YgdGhlbQpUaGUgcmF0aW9uYWxlIGZvciByZS1jbHVzdGVyaW5nIElMQ3MgYW5kIE5LcyB0b2dldGhlciBpcyB0aGF0IHRoZXkgZGVyaXZlIGZyb20gYSBjb21tb24gbHltcGhvaWQgcHJvZ2VuaXRvciAoQ0xQKS4gQnkgcmUtY2x1c3RlcmluZyB0aGVtLCB3ZSBjYW4gaWRlbnRpZnkgSUxDIHN1YnR5cGVzIGluY2x1ZGluZyBOSywgSUxDMSwgSUxDMiwgSUxDMywgYW5kIGV2ZW4gc29tZSBwcm9nZW5pdG9ycy9yYXJlIGNlbGxzLgoKIyMgVXNlIGhhcm1vbnkgZW1iZWRkaW5ncyB0byBjbHVzdGVyICh1c2luZyBTQ1RyYW5zZm9ybSB0byBub3JtLCBmaW5kdmFyZmVhdHVyZSwgYW5kIHNjYWxlIGFnYWluIG9uIHN1YnNldCkKYGBge3J9CiMgQ2hlY2sgdGhlIGlkZW50cwpsZXZlbHMoSWRlbnRzKGhhcm1vbml6ZWRfc2V1cmF0KSkKCiMgU3Vic2V0IHRoZSB0YXJnZXRlZCBjZWxscwpzdWJzZXRfY2VsbHMgPC0gc3Vic2V0KGhhcm1vbml6ZWRfc2V1cmF0LCBpZGVudHMgPSBjKCJOSyIsICJJTENzIiwgIklMQ3MrTksiKSkKCiMgUmUtcnVuIFNDVHJhbnNmb3JtIChOb3JtYWxpemVEYXRhLCBGaW5kVmFyaWFibGVGZWF0dXJlcywgU2NhbGVEYXRhIHdvcmtmbG93KSB0byBlbnN1cmUgdGhhdCB0aGUgZ2VuZSB2YXJpYXRpb24gaXMgY2FsY3VsYXRlZCBvbiB0aGUgc3Vic2V0CnN1YnNldF9jZWxscyA8LSBTQ1RyYW5zZm9ybShzdWJzZXRfY2VsbHMsIHZhcnMudG8ucmVncmVzcyA9ICJwZXJjZW50Lm10IiwgdmVyYm9zZSA9IEZBTFNFKQoKIyBSdW5QQ0EKc3Vic2V0X2NlbGxzIDwtIFJ1blBDQShzdWJzZXRfY2VsbHMsIGFzc2F5ID0gIlNDVCIsIG5wY3MgPSA1MCkKCiMgRWxib3cgUGxvdCB0byB2aXN1YWxpemUgdGhlIG9wdGltYWwgbnVtYmVyIG9mIFBDcwpFbGJvd1Bsb3Qoc3Vic2V0X2NlbGxzKQoKIyBGaW5kIE5laWdoYm9ycwpzdWJzZXRfY2VsbHMgPC0gRmluZE5laWdoYm9ycyhzdWJzZXRfY2VsbHMsIGRpbXMgPSAxOjIwKSAgIyBVc2luZyB0aGUgZmlyc3QgMjAgUENzCgojIEZpbmQgQ2x1c3RlcnMgCnN1YnNldF9jZWxscyA8LSBGaW5kQ2x1c3RlcnMoc3Vic2V0X2NlbGxzLCByZXNvbHV0aW9uID0gMC41KSAgCgojIFJ1biBVTUFQIGZvciBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24Kc3Vic2V0X2NlbGxzIDwtIFJ1blVNQVAoc3Vic2V0X2NlbGxzLCBkaW1zID0gMToyMCkgICMgWW91IGNhbiBhZGp1c3QgdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGlmIG5lY2Vzc2FyeQoKIyBWaXN1YWxpemUgVU1BUApwMSA8LSBEaW1QbG90KHN1YnNldF9jZWxscywgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gIlNhbXBsZSIpCnAyIDwtIERpbVBsb3Qoc3Vic2V0X2NlbGxzLCByZWR1Y3Rpb24gPSAidW1hcCIsIGxhYmVsID0gVFJVRSwgZ3JvdXAuYnkgPSAiQ29uZGl0aW9uIikKCnAxICsgcDIKCmBgYApgYGB7cn0KIyBTaW5jZSBiYXRjaCBlZmZlY3QgaXMgb2JzZXJ2ZWQgaW4gdGhlIHN1YnNldCwgd2UgcnVuIEhhcm1vbnkgb24gdGhlIHN1YnNldC4KCmxpYnJhcnkoaGFybW9ueSkKCnN1YnNldF9jZWxscyA8LSBSdW5IYXJtb255KHN1YnNldF9jZWxscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmJ5LnZhcnMgPSBjKCJTYW1wbGUiLCAiQ29uZGl0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWR1Y3Rpb24gPSAicGNhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2F5LnVzZSA9ICJTQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLnNhdmUgPSAiaGFybW9ueSIpCnJlZHVjdGlvbl9uYW1lIDwtICJoYXJtb255IgoKIyBWaXN1YWxpemUgVU1BUApwMyA8LSBEaW1QbG90KHN1YnNldF9jZWxscywgcmVkdWN0aW9uID0gImhhcm1vbnkiLCBsYWJlbCA9IFRSVUUsIGdyb3VwLmJ5ID0gIlNhbXBsZSIpCnA0IDwtIERpbVBsb3Qoc3Vic2V0X2NlbGxzLCByZWR1Y3Rpb24gPSAiaGFybW9ueSIsIGxhYmVsID0gVFJVRSwgZ3JvdXAuYnkgPSAiQ29uZGl0aW9uIikKCnAzICsgcDQKYGBgCmBgYHtyfQojIERvIHRoZSBkaW1lbnNpb25hbCByZWR1Y3Rpb24gb24gaGFybW9ueSBlbWJlZGRpbmcKc3Vic2V0X2NlbGxzIDwtIHN1YnNldF9jZWxscyAlPiUKICBSdW5VTUFQKHJlZHVjdGlvbiA9IHJlZHVjdGlvbl9uYW1lLCBkaW1zID0gMToyMCkgJT4lCiAgRmluZE5laWdoYm9ycyhyZWR1Y3Rpb24gPSByZWR1Y3Rpb25fbmFtZSwgZGltcyA9IDE6MjApICU+JQogIEZpbmRDbHVzdGVycyhyZXNvbHV0aW9uID0gMC4xLCBhbGdvcml0aG0gPSA0KSAgIyBUcnkgb24gTGVpZGVuIGNsdXN0ZXJpbmcgKDQpIGluc3RlYWQgb2YgTG91dmFpbiAoMSksIGJ1dCByZXN1bHRzIGFyZSBzaW1pbGFyCgpEaW1QbG90KHN1YnNldF9jZWxscywgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJzZXVyYXRfY2x1c3RlcnMiLCBsYWJlbCA9IFRSVUUpICsKICBnZ3RpdGxlKCJVTUFQIG9mIFJlLWNsdXN0ZXJlZCBTdWJzZXQsIHJlc29sdXRpb24gMC4xIikgCmBgYApgYGB7cn0KIyBFbGJvd1Bsb3Qoc3Vic2V0X2NlbGxzKQpgYGAKCgpgYGB7cn0KIyBVc2luZyBnZ2g0eCBhbmQgZG90IHBsb3QgdG8gdmlzdWxpemUgY2Fub25pY2FsIG1hcmtlcnMKCiMgaW5zdGFsbC5wYWNrYWdlcygiZ2doNHgiKQojIGxpYnJhcnkoZ2doNHgpCgpnZW5lX2NlbGx0eXBlX2RmIDwtIGRhdGEuZnJhbWUoCiAgZ2VuZSA9IGMoCiAgICAjIE5LCiAgICAiS0xSRDEiLCAiTktHNyIsCiAgICAjIElMQwogICAgIklMN1IiLCAiS0xSQjEiLAogICAgIyBJTEMxCiAgICAiVEJYMjEiLAogICAgIyBJTEMyCiAgICAiR0FUQTMiLCAiUk9SQSIsCiAgICAjIElMQzMKICAgICJBSFIiLCAiUk9SQyIKICApLAogIAogIGNlbGxfdHlwZSA9IGMoCiAgICByZXAoIk5LIiwgMiksCiAgICByZXAoIklMQyIsIDIpLAogICAgcmVwKCJJTEMxIiwgMSksCiAgICByZXAoIklMQzIiLCAyKSwKICAgIHJlcCgiSUxDMyIsIDIpCiAgKSwKICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UKKQoKCm1hcmtlcl9nZW5lcyA8LSBnZW5lX2NlbGx0eXBlX2RmJGdlbmUKCnAgPC0gRG90UGxvdChzdWJzZXRfY2VsbHMsIGZlYXR1cmVzID0gbWFya2VyX2dlbmVzKSArIAogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAiYmx1ZSIsIG1pZCA9ICJsaWdodGdyZXkiLCBoaWdoID0gInJlZCIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQoKcCRkYXRhIDwtIHAkZGF0YSAlPiUKICBsZWZ0X2pvaW4oZ2VuZV9jZWxsdHlwZV9kZiwgYnkgPSBjKCJmZWF0dXJlcy5wbG90IiA9ICJnZW5lIikpCgpwIDwtIHAgKwpzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsgICMgbW92ZSB4IGF4aXMgdG8gdGhlIHRvcCwgbWFraW5nIGl0IGxpa2UgdGhlIHRpdGxlIG9mIGVhY2ggZmVhdHVyZXMKZmFjZXRfbmVzdGVkKH5jZWxsX3R5cGUgKyBmZWF0dXJlcy5wbG90LCBzY2FsZXMgPSAiZnJlZV94Iiwgc3BhY2UgPSAiZnJlZV94IikgKwpndWlkZXMoeCA9IGd1aWRlX2F4aXNfbmVzdGVkKGNoZWNrLm92ZXJsYXAgPSBUUlVFKSkgKwp0aGVtZSgKICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDApLAogIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLAogIHBhbmVsLnNwYWNpbmcueCA9IHVuaXQoMC4yLCAibGluZXMiKQopCgpnZ3NhdmUoZmlsZW5hbWUgPSAiTktfSUxDX2Fubm90YXRpb24yLnBuZyIsIHBsb3QgPSBwLCB3aWR0aCA9IDE1LCBoZWlnaHQgPSA4LCBkcGkgPSAzMDApCgpwCmBgYApTaW5jZSB0aGUgY2Fub25pY2FsIG1hcmtlciB2aXN1YWxpemF0aW9uIGRpZCBub3QgY2xlYXJseSBkaXN0aW5ndWlzaCBJTEMgc3VidHlwZXMsIHdlIGZvbGxvd2VkIHRoZSBwYXBlcidzIGFwcHJvYWNoIGFuZCB1c2VkIFNpbmdsZVIgZm9yIGFubm90YXRpb24uCgojIyBBbm5vdGF0ZSB0aGUgcmUtY2x1c3RlcmVkIE5LL0lMQ3MgYnkgU2luZ2xlUgpgYGB7cn0KIyBCaW9jTWFuYWdlcjo6aW5zdGFsbCgiU2luZ2xlUiIpCiMgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQojIGluc3RhbGwucGFja2FnZXMoInRpZHlyIikKCiMgTG9hZCB0aGUgbGlicmFyaWVzCmxpYnJhcnkoU2luZ2xlUikKbGlicmFyeShTdW1tYXJpemVkRXhwZXJpbWVudCkKbGlicmFyeShNYXRyaXgpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGRhdGEudGFibGUpCmBgYAoKYGBge3J9CiMgUGFydCAxLiBQcm9jZXNzIHRoZSByYXcgcmVmZXJlbmNlIGZpbGVzIChwcm92aWRlZCBieSB0aGUgcGFwZXIpCmRhdGFfZGlyIDwtICIvVXNlcnMveXVuY2hpY2hlbi8xMTMtMl9zY1JOQS9maW5hbF9wcm9qZWN0L0dTRTcwNTgwX1JBVy8iCgojIExpc3QgYWxsIGZpbGVzCmZpbGVzIDwtIGxpc3QuZmlsZXMoZGF0YV9kaXIsIGZ1bGwubmFtZXMgPSBUUlVFLCBwYXR0ZXJuID0gIioudHh0Lmd6IikKCiMgRnVuY3Rpb24gdG8gZ2V0IGxhYmVscyBmcm9tIGZpbGUgbmFtZQpnZXRfbGFiZWxfZnJvbV9maWxlbmFtZSA8LSBmdW5jdGlvbihmaWxlbmFtZSkgewogIHBhcnRzIDwtIHN0cnNwbGl0KGdzdWIoIi50eHQuZ3oiLCAiIiwgYmFzZW5hbWUoZmlsZW5hbWUpKSwgIl8iKVtbMV1dCiAgbGFiZWwgPC0gcGFydHNbbGVuZ3RoKHBhcnRzKSAtIDFdCiAgcmV0dXJuKGxhYmVsKQp9CgojIEluaXRpYWxpemUKZXhwcl9saXN0IDwtIGxpc3QoKQpsYWJlbHMgPC0gYygpCnNhbXBsZV9uYW1lcyA8LSBjKCkKCmZvciAoZiBpbiBmaWxlcykgewogIGxhYmVsIDwtIGdldF9sYWJlbF9mcm9tX2ZpbGVuYW1lKGYpCiAgaWYgKCFpcy5uYShsYWJlbCkpIHsKICAgICMgUmVhZCBmaWxlLCBhc3N1bWluZyBpdCdzIHRhYi1kZWxpbWl0ZWQgd2l0aCBoZWFkZXIKICAgIGRmIDwtIGZyZWFkKGYsIGhlYWRlciA9IFRSVUUpCiAgICAKICAgICMgRXh0cmFjdCByZWxldmFudCBjb2x1bW5zCiAgICBnZW5lX25hbWVzIDwtIGRmW1sxXV0gICAgICAgICAgIyAiI0dlbmUgc3ltYm9sIgogICAgZXhwcl92YWx1ZXMgPC0gZGZbWyJSUEtNIl1dICAgICMgVXNlIFJQS00gY29sdW1uIGFzIGV4cHJlc3Npb24KICAgIAogICAgIyBOYW1lIHRoZSB2ZWN0b3IgdXNpbmcgZ2VuZSBzeW1ib2xzCiAgICBuYW1lcyhleHByX3ZhbHVlcykgPC0gZ2VuZV9uYW1lcwoKICAgICMgU3RvcmUKICAgIGV4cHJfbGlzdFtbZl1dIDwtIGV4cHJfdmFsdWVzCiAgICBsYWJlbHMgPC0gYyhsYWJlbHMsIGxhYmVsKQogICAgc2FtcGxlX25hbWVzIDwtIGMoc2FtcGxlX25hbWVzLCBiYXNlbmFtZShmKSkgICMgZm9yIGNvbG5hbWVzIGxhdGVyCiAgfQp9CgojIFBhcnQgMi4gQnVpbGQgdGhlIEV4cHJlc3Npb24gTWF0cml4CiMgVXNlIGNvbW1vbiBnZW5lcyBhY3Jvc3MgYWxsIHNhbXBsZXMKY29tbW9uX2dlbmVzIDwtIFJlZHVjZShpbnRlcnNlY3QsIGxhcHBseShleHByX2xpc3QsIG5hbWVzKSkKCiMgQnVpbGQgZXhwcmVzc2lvbiBtYXRyaXgKZXhwcl9tYXQgPC0gZG8uY2FsbChjYmluZCwgbGFwcGx5KGV4cHJfbGlzdCwgZnVuY3Rpb24oeCkgeFtjb21tb25fZ2VuZXNdKSkKcm93bmFtZXMoZXhwcl9tYXQpIDwtIGNvbW1vbl9nZW5lcwpjb2xuYW1lcyhleHByX21hdCkgPC0gc2FtcGxlX25hbWVzCgojIFBhcnQgMy4gQ3JlYXRlIFNpbmdsZVIgcmVmZXJlbmNlIG9iamVjdApsaWJyYXJ5KFN1bW1hcml6ZWRFeHBlcmltZW50KQoKbG9nX2V4cHJfbWF0IDwtIGxvZzIoZXhwcl9tYXQgKyAxKSAjU2luZ2xlUiBleHBlY3RzIGxvZy1ub3JtYWxpemVkIGV4cHJlc3Npb24KCnJlZl9zZSA8LSBTdW1tYXJpemVkRXhwZXJpbWVudCgKICBhc3NheXMgPSBsaXN0KGxvZ2NvdW50cyA9IGxvZ19leHByX21hdCkKKQoKY29sRGF0YShyZWZfc2UpJGxhYmVsIDwtIGxhYmVscwpgYGAKCmBgYHtyfQojIFNpbmdsZVIgZXhwZWN0cyBsb2ctbm9ybWFsaXplZCBjb3VudHMsIG5vdCBjb3JyZWN0ZWQgcmVzaWR1YWxzIGZyb20gU0NUcmFuc2Zvcm0KRGVmYXVsdEFzc2F5KHN1YnNldF9jZWxscykgPC0gIlJOQSIKc3Vic2V0X2NlbGxzIDwtIE5vcm1hbGl6ZURhdGEoc3Vic2V0X2NlbGxzKQoKIyBFeHRyYWN0IGV4cHJlc3Npb24gbWF0cml4IGZvciBhbm5vdGF0aW9uCnRlc3RfZXhwciA8LSBHZXRBc3NheURhdGEoc3Vic2V0X2NlbGxzLCBhc3NheSA9ICJSTkEiLCBzbG90ID0gImRhdGEiKSAjIGdlbmUgKHJvd3MpIMOXIGNlbGxzIChjb2x1bW5zKSBtYXRyaXgKCiMgUnVuIFNpbmdsZVIKc2luZ2xlUl9yZXN1bHRzIDwtIFNpbmdsZVIoCiAgdGVzdCA9IGFzLm1hdHJpeCh0ZXN0X2V4cHIpLCAgIyBjZWxsLWxldmVsIG1hdHJpeAogIHJlZiA9IHJlZl9zZSwgICAgICAgICAgICAgICAgICMgYnVsayByZWZlcmVuY2UKICBsYWJlbHMgPSByZWZfc2UkbGFiZWwgICAgICAgICAjIHZlY3RvciBvZiBsYWJlbHMgKGUuZy4sIElMQzEsIElMQzIsIElMQzMsIE5LKQopCgojIEFkZCBTaW5nbGVSIGxhYmVscyBiYWNrIHRvIFNldXJhdCBtZXRhZGF0YQpzdWJzZXRfY2VsbHMkU2luZ2xlUl9sYWJlbCA8LSBzaW5nbGVSX3Jlc3VsdHMkbGFiZWxzCgojIFZpc3VhbGl6ZSByZXN1bHRzCkRpbVBsb3Qoc3Vic2V0X2NlbGxzLCBncm91cC5ieSA9ICJTaW5nbGVSX2xhYmVsIiwgbGFiZWwgPSBUUlVFKSArCiAgZ2d0aXRsZSgiU2luZ2xlUiBBbm5vdGF0aW9uIikKYGBgCgoKYGBge3J9CiMgQWxzbyBjaGVjayB0aGUgcHJ1bmVkIHJlc3VsdCwgd2hpY2ggdGhlIHVuc3VyZSBwcmVkaWN0aW9ucyBhcmUgc2hvd24gaW4gZ3JleQpzdWJzZXRfY2VsbHMkU2luZ2xlUl9wcnVuZWQgPC0gc2luZ2xlUl9yZXN1bHRzJHBydW5lZC5sYWJlbHMKRGltUGxvdChzdWJzZXRfY2VsbHMsIGdyb3VwLmJ5ID0gIlNpbmdsZVJfcHJ1bmVkIiwgbGFiZWwgPSBUUlVFKQpgYGAKRnJvbSB0aGUgcmVzdWx0cywgTksgY2VsbHMgYW5kIElMQzJzIGNhbiBiZSBlYXNpbHkgZGlzdGluZ3Vpc2hlZCwgd2hpY2ggaXMgY29uc2lzdGVudCB3aXRoIHRoZSBmaW5kaW5ncyByZXBvcnRlZCBpbiB0aGUgcGFwZXIuIFdlIGFsc28gb2JzZXJ2ZWQgdGhhdCBJTEMxcyBhcmUgc2NhdHRlcmVkIGFjcm9zcyBkaWZmZXJlbnQgY2x1c3RlcnMsIHdoaWNoIHNpbWlsYXJseSBhbGlnbnMgd2l0aCB0aGUgcGFwZXLigJlzIG9ic2VydmF0aW9ucy4gQW5vdGhlciBzaW1pbGFyaXR5IGlzIHRoYXQgb25seSBhIHNtYWxsIHByb3BvcnRpb24gb2YgSUxDM3Mgd2VyZSBpZGVudGlmaWVkLiBJbiBzdW1tYXJ5LCBJTEMycyBhbmQgTksgY2VsbHMgYXBwZWFyIHRvIGJlIHRoZSBwcmVkb21pbmFudCBpbm5hdGUgbHltcGhvaWQgY2VsbCBwb3B1bGF0aW9ucyBpbiBodW1hbiBza2luLgoKCiMgSWRlbnRpZnkgREVHcyBhY3Jvc3MgY29uZGl0aW9ucyBpbiBJTENzIGFuZCBOSywgYW5kIGNvbmR1Y3QgdGhlaXIgZnVuY3Rpb25hbCBlbnJpY2htZW50IGFuYWx5c2lzCmBgYHtyfQojIENoZWNrIGRlZmF1bHQgYXNzYXkgYW5kIGlkZW50cwpEZWZhdWx0QXNzYXkoaGFybW9uaXplZF9zZXVyYXQpCkRlZmF1bHRBc3NheShoYXJtb25pemVkX3NldXJhdCkgPC0gIlNDVCIKdGFibGUoSWRlbnRzKGhhcm1vbml6ZWRfc2V1cmF0KSkKYGBgCgpgYGB7cn0KIyBQZXJmb3JtIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIGZvciBJTENzCmFkIDwtIFByZXBTQ1RGaW5kTWFya2VycyhoYXJtb25pemVkX3NldXJhdCkKYWQkY2VsbHR5cGUuc3RpbSA8LSBwYXN0ZShhZCRjZWxsdHlwZS5wYXBlciwgYWQkQ29uZGl0aW9uLCBzZXAgPSAiXyIpCklkZW50cyhhZCkgPC0gImNlbGx0eXBlLnN0aW0iCmlsYy5hZC5yZXNwb25zZSA8LSBGaW5kTWFya2VycyhhZCwgaWRlbnQuMSA9ICJJTENzX0FEIiwgaWRlbnQuMiA9ICJJTENzX05IUyIsIHZlcmJvc2UgPSBGQUxTRSkKCiMgRmlsdGVyIGdlbmVzIHdpdGggcF92YWxfYWRqIDwgMC4wNSAmIHBjdC4xID4gMC4yCnNpZ25pZmljYW50X2dlbmVzIDwtIGlsYy5hZC5yZXNwb25zZVtpbGMuYWQucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIGlsYy5hZC5yZXNwb25zZSRwY3QuMSA+IDAuMixdCgojIFJhbmsgYnkgYXZnX2xvZzJGQyAoYWJzb2x1dGUgdmFsdWUgZm9yIGJvdGggdXByZWd1bGF0ZWQgYW5kIGRvd25yZWd1bGF0ZWQgZ2VuZXMpCnJhbmtlZF9nZW5lcyA8LSBzaWduaWZpY2FudF9nZW5lc1tvcmRlcihzaWduaWZpY2FudF9nZW5lcyRhdmdfbG9nMkZDLCBkZWNyZWFzaW5nID0gVFJVRSksIF0KCiMgVmlldyB0aGUgdG9wIHVwcmVndWxhdGVkIGdlbmVzCmhlYWQocmFua2VkX2dlbmVzLCAyMCkgICMgVG9wIDIwIHVwcmVndWxhdGVkIGdlbmVzCmBgYAoKCmBgYHtyfQojIFBlcmZvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gZm9yIE5LCm5rLmFkLnJlc3BvbnNlIDwtIEZpbmRNYXJrZXJzKGFkLCBpZGVudC4xID0gIk5LX0FEIiwgaWRlbnQuMiA9ICJOS19OSFMiLCB2ZXJib3NlID0gRkFMU0UpCgojIEZpbHRlciBnZW5lcyB3aXRoIHBfdmFsX2FkaiA8IDAuMDUgJiBwY3QuMSA+IDAuMgpzaWduaWZpY2FudF9nZW5lczIgPC0gbmsuYWQucmVzcG9uc2VbbmsuYWQucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIG5rLmFkLnJlc3BvbnNlJHBjdC4xID4gMC4yLF0KCiMgUmFuayBieSBhdmdfbG9nMkZDIChhYnNvbHV0ZSB2YWx1ZSBmb3IgYm90aCB1cHJlZ3VsYXRlZCBhbmQgZG93bnJlZ3VsYXRlZCBnZW5lcykKcmFua2VkX2dlbmVzMiA8LSBzaWduaWZpY2FudF9nZW5lczJbb3JkZXIoc2lnbmlmaWNhbnRfZ2VuZXMyJGF2Z19sb2cyRkMsIGRlY3JlYXNpbmcgPSBUUlVFKSwgXQoKIyBWaWV3IHRoZSB0b3AgdXByZWd1bGF0ZWQgZ2VuZXMKaGVhZChyYW5rZWRfZ2VuZXMyLCAyMCkgICMgVG9wIDIwIHVwcmVndWxhdGVkIGdlbmVzCmBgYAoKVGhlIHRvcCAyMCB1bnJlZ3VsYXRlZCBnZW5lcyB3ZXJlIGlucHV0IHRvIFtFbnJpY2hyXShodHRwczovL21hYXlhbmxhYi5jbG91ZC9FbnJpY2hyLykgdG8gZG8gZnVuY3Rpb25hbCBlbnJpY2htZW50IGFuYWx5c2lzIHVzaW5nIFJlYWN0b21lIGFuZCBLRUdHIGRhdGFiYXNlLiBJbiBhdG9waWMgZGVybWF0aXRpcyAoQUQpLCBJTENzIGV4aGliaXRlZCB1cHJlZ3VsYXRlZCBpbW11bmUtcmVsYXRlZCBwYXRod2F5cywgd2l0aCBERUdzIHN1Y2ggYXMgSUwyMiBhbmQgSUwyNiAoYXNzb2NpYXRlZCB3aXRoIElMQzMpLCBhbmQgQVJFRyAoYXNzb2NpYXRlZCB3aXRoIElMQzIpLiBJbiBhZGRpdGlvbiwgTksgY2VsbHMgaW4gQUQgc2hvd2VkIHVwcmVndWxhdGlvbiBvZiBUTkYgc2lnbmFsaW5nIGFuZCBhbnRpbWljcm9iaWFsIHJlc3BvbnNlIHBhdGh3YXlzLgoKCgojIElkZW50aWZ5IERFR3MgYWNyb3NzIGNvbmRpdGlvbnMgaW4gSUxDMSwgSUxDMiwgSUxDMyBhbmQgTkssIGFuZCBjb25kdWN0IHRoZWlyIGZ1bmN0aW9uYWwgZW5yaWNobWVudCBhbmFseXNpcwpgYGB7cn0KIyBDaGVjayBkZWZhdWx0IGFzc2F5IGFuZCBpZGVudHMKRGVmYXVsdEFzc2F5KHN1YnNldF9jZWxscykKRGVmYXVsdEFzc2F5KHN1YnNldF9jZWxscykgPC0gIlNDVCIKdGFibGUoSWRlbnRzKHN1YnNldF9jZWxscykpCklkZW50cyhzdWJzZXRfY2VsbHMpIDwtIHN1YnNldF9jZWxscyRTaW5nbGVSX3BydW5lZAp0YWJsZShJZGVudHMoc3Vic2V0X2NlbGxzKSkKYGBgCgpgYGB7cn0KIyBQZXJmb3JtIGRpZmZlcmVudGlhbCBleHByZXNzaW9uCmFkLmlsYyA8LSBQcmVwU0NURmluZE1hcmtlcnMoc3Vic2V0X2NlbGxzKQphZC5pbGMkY2VsbHR5cGUuc3RpbSA8LSBwYXN0ZShhZC5pbGMkU2luZ2xlUl9wcnVuZWQsIGFkLmlsYyRDb25kaXRpb24sIHNlcCA9ICJfIikKSWRlbnRzKGFkLmlsYykgPC0gImNlbGx0eXBlLnN0aW0iCgojIElMQzEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphZC5pbGMxLnJlc3BvbnNlIDwtIEZpbmRNYXJrZXJzKGFkLmlsYywgaWRlbnQuMSA9ICJJTEMxX0FEIiwgaWRlbnQuMiA9ICJJTEMxX05IUyIsIHZlcmJvc2UgPSBGQUxTRSkKCiMgRmlsdGVyIGdlbmVzIHdpdGggcF92YWxfYWRqIDwgMC4wNSAmIHBjdC4xID4gMC4yCnNpZ25pZmljYW50X2dlbmVzMSA8LSBhZC5pbGMxLnJlc3BvbnNlW2FkLmlsYzEucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIGFkLmlsYzEucmVzcG9uc2UkcGN0LjEgPiAwLjIsXQoKIyBSYW5rIGJ5IGF2Z19sb2cyRkMgKGFic29sdXRlIHZhbHVlIGZvciBib3RoIHVwcmVndWxhdGVkIGFuZCBkb3ducmVndWxhdGVkIGdlbmVzKQpyYW5rZWRfZ2VuZXMxIDwtIHNpZ25pZmljYW50X2dlbmVzMVtvcmRlcihzaWduaWZpY2FudF9nZW5lczEkYXZnX2xvZzJGQywgZGVjcmVhc2luZyA9IFRSVUUpLCBdCgojIFZpZXcgdGhlIHRvcCB1cHJlZ3VsYXRlZCBnZW5lcwpoZWFkKHJhbmtlZF9nZW5lczEsIDIwKSAgIyBUb3AgMjAgdXByZWd1bGF0ZWQgZ2VuZXMKCgojIElMQzItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphZC5pbGMyLnJlc3BvbnNlIDwtIEZpbmRNYXJrZXJzKGFkLmlsYywgaWRlbnQuMSA9ICJJTEMyX0FEIiwgaWRlbnQuMiA9ICJJTEMyX05IUyIsIHZlcmJvc2UgPSBGQUxTRSkKCiMgRmlsdGVyIGdlbmVzIHdpdGggcF92YWxfYWRqIDwgMC4wNSAmIHBjdC4xID4gMC4yCnNpZ25pZmljYW50X2dlbmVzMiA8LSBhZC5pbGMyLnJlc3BvbnNlW2FkLmlsYzIucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIGFkLmlsYzIucmVzcG9uc2UkcGN0LjEgPiAwLjIsXQoKIyBSYW5rIGJ5IGF2Z19sb2cyRkMgKGFic29sdXRlIHZhbHVlIGZvciBib3RoIHVwcmVndWxhdGVkIGFuZCBkb3ducmVndWxhdGVkIGdlbmVzKQpyYW5rZWRfZ2VuZXMyIDwtIHNpZ25pZmljYW50X2dlbmVzMltvcmRlcihzaWduaWZpY2FudF9nZW5lczIkYXZnX2xvZzJGQywgZGVjcmVhc2luZyA9IFRSVUUpLCBdCgojIFZpZXcgdGhlIHRvcCB1cHJlZ3VsYXRlZCBnZW5lcwpoZWFkKHJhbmtlZF9nZW5lczIsIDIwKSAgIyBUb3AgMjAgdXByZWd1bGF0ZWQgZ2VuZXMKCgojIElMQzMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphZC5pbGMzLnJlc3BvbnNlIDwtIEZpbmRNYXJrZXJzKGFkLmlsYywgaWRlbnQuMSA9ICJJTEMzX0FEIiwgaWRlbnQuMiA9ICJJTEMzX05IUyIsIHZlcmJvc2UgPSBGQUxTRSkKCiMgRmlsdGVyIGdlbmVzIHdpdGggcF92YWxfYWRqIDwgMC4wNSAmIHBjdC4xID4gMC4yCnNpZ25pZmljYW50X2dlbmVzMyA8LSBhZC5pbGMzLnJlc3BvbnNlW2FkLmlsYzMucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIGFkLmlsYzMucmVzcG9uc2UkcGN0LjEgPiAwLjIsXQoKIyBSYW5rIGJ5IGF2Z19sb2cyRkMgKGFic29sdXRlIHZhbHVlIGZvciBib3RoIHVwcmVndWxhdGVkIGFuZCBkb3ducmVndWxhdGVkIGdlbmVzKQpyYW5rZWRfZ2VuZXMzIDwtIHNpZ25pZmljYW50X2dlbmVzM1tvcmRlcihzaWduaWZpY2FudF9nZW5lczMkYXZnX2xvZzJGQywgZGVjcmVhc2luZyA9IFRSVUUpLCBdCgojIFZpZXcgdGhlIHRvcCB1cHJlZ3VsYXRlZCBnZW5lcwpoZWFkKHJhbmtlZF9nZW5lczMsIDIwKSAgIyBUb3AgMjAgdXByZWd1bGF0ZWQgZ2VuZXMKCgojIE5LLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYWQubmsucmVzcG9uc2UgPC0gRmluZE1hcmtlcnMoYWQuaWxjLCBpZGVudC4xID0gIk5LX0FEIiwgaWRlbnQuMiA9ICJOS19OSFMiLCB2ZXJib3NlID0gRkFMU0UpCgojIEZpbHRlciBnZW5lcyB3aXRoIHBfdmFsX2FkaiA8IDAuMDUgJiBwY3QuMSA+IDAuMgpzaWduaWZpY2FudF9nZW5lczQgPC0gYWQubmsucmVzcG9uc2VbYWQubmsucmVzcG9uc2UkcF92YWxfYWRqIDwgMC4wNSAmIGFkLm5rLnJlc3BvbnNlJHBjdC4xID4gMC4yLF0KCiMgUmFuayBieSBhdmdfbG9nMkZDIChhYnNvbHV0ZSB2YWx1ZSBmb3IgYm90aCB1cHJlZ3VsYXRlZCBhbmQgZG93bnJlZ3VsYXRlZCBnZW5lcykKcmFua2VkX2dlbmVzNCA8LSBzaWduaWZpY2FudF9nZW5lczRbb3JkZXIoc2lnbmlmaWNhbnRfZ2VuZXM0JGF2Z19sb2cyRkMsIGRlY3JlYXNpbmcgPSBUUlVFKSwgXQoKIyBWaWV3IHRoZSB0b3AgdXByZWd1bGF0ZWQgZ2VuZXMKaGVhZChyYW5rZWRfZ2VuZXM0LCAyMCkgICMgVG9wIDIwIHVwcmVndWxhdGVkIGdlbmVzCmBgYAoKVGhlIHRvcCAyMCB1bnJlZ3VsYXRlZCBnZW5lcyB3ZXJlIGlucHV0IHRvIFtFbnJpY2hyXShodHRwczovL21hYXlhbmxhYi5jbG91ZC9FbnJpY2hyLykgdG8gZG8gZnVuY3Rpb25hbCBlbnJpY2htZW50IGFuYWx5c2lzIHVzaW5nIFJlYWN0b21lIGFuZCBLRUdHIGRhdGFiYXNlLiBEdWUgdG8gdGhlIGxpbWl0ZWQgbnVtYmVyIG9mIElMQzMgY2VsbHMsIG5vIHNpZ25pZmljYW50IERFR3MgY291bGQgYmUgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgYWRqdXN0ZWQgcC12YWx1ZSAocF92YWxfYWRqKS4gRm9yIE5LIGNlbGxzLCBJTEMxLCBhbmQgSUxDMiwgdGhlIFJlYWN0b21lIGFuYWx5c2lzIHJldmVhbGVkIGVucmljaG1lbnQgaW4gdGhlICdNZXRhbCBTZXF1ZXN0cmF0aW9uIGJ5IEFudGltaWNyb2JpYWwgUHJvdGVpbnMnIHBhdGh3YXksIHdoaWxlIHRoZSBLRUdHIGFuYWx5c2lzIGlkZW50aWZpZWQgZW5yaWNobWVudCBpbiB0aGUgJ0lMLTE3IHNpZ25hbGluZyBwYXRod2F5Jy4K